使用雄辩的访问枢轴列,并根据条件 - laravel,雄辩的返回结果



我的数据以下面显示的格式,这是许多与许多关系。

我只想从pivot中值的关系中检索那些条目(is_column1 = 0(。如何以雄辩的风格访问枢轴?

查询

$data = Relation1::with(['relation2' => function ($query){
    $query->where('col4', '1');
    $query->where('pivot.is_column1', '1'); // I want something like this
}])->get();

结果

[
  {
     "id": 1,
     "name": "Test",
     "relation2": 
        [
          {
             "id": 3,
             "col2_id": 1,
             "col3_id": 1,
             "col4": "1",
             "pivot": {
                 "col1_id": 1,
                 "col2_id": 2,
                 "is_column1": "1"
              }
           }
        ] 
     }
 ]

使用wherePivot()方法:

Relation1::with(['relation2' => function ($query) {
    $query->where('col4', '1')
        ->wherePivot('is_column1', '1');
}])
->get();

,如果您的枢轴表连接两个表(尤其是与多一部分的关系(,则要容易得多。我建议您创建一个枢轴表,哪个表名称必须按字母顺序排列(最好的方法是为此创建迁移(。

示例如果您有用户和标签,则枢轴表必须为单数

user_tag

user_tag表必须具有user_idtag_id列。

然后沿着用户php的行,制作一个函数,laravel可以理解它是属性

public function tags() {
    $this->belongsToMany(Tag::class);
}

,反之亦然。在宣布模型之间的关系之后,Laravel将自动查看user_tag表(请确保其按顺序排列,否则它将不起作用(。

您可以在这样的事情中做一些事情:

$user->tags; // returns all tag records in database associated in the pivot table $tag->users; // returns all users associated with tag

这样做,您可以通过关系访问用户或标签的属性

$user->tags()->pluck('name');

类似的东西

最新更新