如何设置关系 Laravel 的位置?

How to set where in relation Laravel?

我使用以下结构来连接表:with("attachments", "offers.publisher").

public function publisher()
    {
        return $this->belongsTo("App\User", "user_id", "id");
    }

如何仅在offers.status = 1时加入publisher关系?

换句话说,我需要根据条件 Where

使用 publisher

我也试过这个:

 $announcements = Announcement::whereHas('offers', function($q) {
            $q->with("publisher")->where('status', 1);
        })->get();

最好的方法是只有两个定义,publishers 用于所有发布商,active_publishers 用于 status = 1:

public function publisher()
{
    return $this->belongsTo("App\User", "user_id", "id");
}

public function active_publisher()
{
    return $this->publisher()->where('status', 1);
}

$object->active_publisher()->get();

一起使用

这里link可以帮到你:

请检查:

Eloquent where condition based on a "belongs to" relationship

你也可以这样做:

假设您有一个 post 模态,每个 post 都有很多评论。所以可以通过如下where conditions

得到条件匹配post的评论
 public function comments()
{
    return $this->hasMany('App\Comment');
}

 App\Post::find(1)->comments()->where('title', 'foo')->get();

谢谢