范围总是得到相同的关系

时间:2018-03-10 18:25:07

标签: laravel eloquent

我想建立关系bt条件......

我试试这样:

型号:

public function page_link()
{
    return $this->belongsTo(Link::class, 'page_id', 'user_id')->inRandomOrder()->Select('links.id', 'links.title', 'links.photo', 'links.country', 'links.friendly_url', 'links.clicks', 'links.description', 'links.suggestions', 'links.count_comments', 'links.url', 'links.shares', 'links.page_id', 'links.tag_id', 'links.created_at')->where('sponsored', 0)->where('scheduled', 0)>where('status', 1)->take(3)->orderBy('id','desc');
}

public function user_share()
{
    return $this->belongsTo(Share::class, 'user_id', 'user_id')->inRandomOrder()->Select('id', 'link_id', 'user_id', 'shared_in', 'content', 'created_at')->take(3)->orderBy('id', 'desc')->where('type', '=', 0);
}

public function user(){
    return $this->belongsTo(User::class, 'user_id', 'id');
}

public function scopeProfile($query)
{
    return $query
        ->when($this->type == 0, function($q)
            {
                return $q->with('user_share.link.page')->with('user')->with('user_share.link.tag');
            })
            ->when($this->type == 1, function($q)
            {
                 return $q->with('page_link');
            })
            ->when($this->type == 2, function($q) 
            {
                 return $q->with('group_link');
           });
}

控制器:

 $feed = Feed::Profile()->where('follower_id', auth()->user()->id)
                ->take(10)
                ->get();

但是所有结果,甚至类型1或2都返回“user_links”关系。我不知道发生了什么。

有人可以帮帮我吗?

0 个答案:

没有答案