我有三张桌子 - 与会者,留言和参加者消息。当向用户发送标准化消息时,记录将被添加到数据透视表attendee_message中,其中包含与会者的ID,消息的ID以及created_at字段中的日期/时间戳。
我的问题是,与会者和消息表都有一个名为created_at的字段,当我显示消息发送的日期/时间(来自attendee_message列的created_at)时,它会显示消息表中的created_at。如何显示attendee_message表中的created_at?
获取与会者,范围和模型关系的函数:
public function getatts() {
$atts = Attendee::cmo()->orderBy('created_at');
$atts = $atts->paginate(25);
return $atts;
}
public function scopeCmo($query)
{
return $query->where('block_id', '=', 3);
}
public function messages() {
return $this->belongsToMany('\App\Models\Message','attendee_message','attendee_id','message_id')
->withPivot('id');
}
来自我的list.blade.php:
@foreach ($att->messages as $message)
<li>'{{$message->subject}}' sent {{$message->created_at}}</li>
@endforeach
答案 0 :(得分:1)
要访问数据透视表中的行,您可以使用pivot
属性。 Laravel docs
$message->pivot->created_at
但是,默认情况下,pivot对象中只存在键。所以你需要做
->withPivot('created_at');
关于这段关系。在您的情况下,如果您想要->withPivot('id', 'created_at')
,那么它将是id