Php 使用Eloquent访问轴列,并根据条件返回结果-Laravel,Eloquent

Php 使用Eloquent访问轴列,并根据条件返回结果-Laravel,Eloquent,php,laravel,laravel-5,eloquent,laravel-eloquent,Php,Laravel,Laravel 5,Eloquent,Laravel Eloquent,我的数据格式如下所示,这是一种多对多关系 我只想从关系2中检索那些在pivot中的值(是_column1=0)的条目。如何以雄辩的风格进入pivot 查询 $data = Relation1::with(['relation2' => function ($query){ $query->where('col4', '1'); $query->where('pivot.is_column1', '1'); // I want something like thi

我的数据格式如下所示,这是一种多对多关系

我只想从关系2中检索那些在pivot中的值(是_column1=0)的条目。如何以雄辩的风格进入pivot

查询

$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"
              }
           }
        ] 
     }
 ]
使用以下方法:

使用以下方法:


如果有连接两个表(特别是多对多关系)的透视表,那么就容易多了。我建议您创建一个pivot表,表名必须按表之间的字母顺序排列(最好的方法是为此创建迁移)

示例:若您有用户和标记,则透视表必须为单数形式

user_tag
user\u-tag
表必须具有可用的
user\u-id
tag\u-id

然后按照User.php的思路,创建一个函数,Laravel可以理解它是一个属性

public function tags() {
    $this->belongsToMany(Tag::class);
}
反之亦然。声明模型之间的关系后,Laravel将自动查看
用户标签
表(确保它按字母顺序排列,否则它将不起作用)

您可以这样做:

$user->tags;//返回数据透视表中关联的数据库中的所有标记记录
$tag->users;//返回与标记关联的所有用户

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

$user->tags()->pull('name')


类似这样的情况

如果有连接这两个表的透视表(特别是多对多关系),那么就容易多了。我建议您创建一个pivot表,表名必须按表之间的字母顺序排列(最好的方法是为此创建迁移)

示例:若您有用户和标记,则透视表必须为单数形式

user_tag
user\u-tag
表必须具有可用的
user\u-id
tag\u-id

然后按照User.php的思路,创建一个函数,Laravel可以理解它是一个属性

public function tags() {
    $this->belongsToMany(Tag::class);
}
反之亦然。声明模型之间的关系后,Laravel将自动查看
用户标签
表(确保它按字母顺序排列,否则它将不起作用)

您可以这样做:

$user->tags;//返回数据透视表中关联的数据库中的所有标记记录
$tag->users;//返回与标记关联的所有用户

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

$user->tags()->pull('name')

诸如此类