从数据透视表获取数据

时间:2018-10-15 12:05:00

标签: database laravel eloquent

我正在尝试从数据透视表中获取数据,但显示为“正在尝试获取非对象的属性'标签'”。即使表中有一些数据,控制器中的find(1)也不会返回任何内容。

我的模特:

class Videos extends Model
{
    protected $table = 'videos';
    function tags(){
        return $this->belongsToMany('App\Models\Videos\Tags','tag_video','video_id','tag_id');

    }


class Tags extends Model
{

    function videos(){
        return $this->belongsToMany('App\Models\Videos\Videos','tag_video', 'tag_id','video_id');
    }
}

我的控制器:

 public function fetch(){
        $videos_from_supercategories =
        $videos_with_tags = Videos::find(1);
        $tags = $videos_with_tags->tags->first();

      $data['tags']=$tags;

        return $data;
    }

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

Videos::find(1)尝试查找id = 1的视频,如果未显示则不返回任何内容,并且您收到异常,则可以使用findOrFail(1)

findOrFail将引发模型未找到异常,您希望发生这种情况,因为否则您将尝试访问非对象上的属性。

在关系中,您必须指定要包括的列:     

public function fetch()
{
    return Videos::findOrFail(1)->tags->first()->pivot->column1;
}

class Videos extends Model
{
    protected $table = 'videos';
    function tags()
    {
        return $this->belongsToMany('App\Models\Videos\Tags','tag_video','video_id','tag_id')->withPivot('column1', 'column2');
    }
}