Php 使用Eloquent访问轴列,并根据条件返回结果-Laravel,Eloquent
我的数据格式如下所示,这是一种多对多关系 我只想从关系2中检索那些在pivot中的值(是_column1=0)的条目。如何以雄辩的风格进入pivot 查询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
$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')代码>
诸如此类