在Laravel 4中显示pivot枢轴表中的created_at

时间:2014-11-17 20:05:47

标签: mysql laravel laravel-4 eloquent

我有三张桌子 - 与会者,留言和参加者消息。当向用户发送标准化消息时,记录将被添加到数据透视表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

1 个答案:

答案 0 :(得分:1)

要访问数据透视表中的行,您可以使用pivot属性。 Laravel docs

$message->pivot->created_at

但是,默认情况下,pivot对象中只存在键。所以你需要做

->withPivot('created_at');
关于这段关系。在您的情况下,如果您想要->withPivot('id', 'created_at'),那么它将是id