gpt4 book ai didi

laravel - 如何在 Laravel Eloquent 关系中添加多个条件

转载 作者:行者123 更新时间:2023-12-04 03:08:22 33 4
gpt4 key购买 nike

我是 Laravel 的新手,正在开发 5.4 版本。我有一个模型“A”和模型“B”。模型 A 与 B 有很多关系。到目前为止一切正常。但现在,我想为这种关系添加更多条件。

默认情况下,Laravel 只处理外键关系。我的意思是它仅根据 1 个条件匹配数据。在这里,我想要更多的条件。

以下是两个模型的表格:

表:一个

id      name      Year  
1 ABC 2016
2 DEF 2017

表:乙
 id     A_id     name   Year  
1 1 tst 2016
2 2 fdf 2017
3 1 kjg 2017

默认情况下,如果我想从表 B 中查看 A_id 1 的记录,那么 Laravel 将获取 A_id 1 的所有记录。但是现在,假设,如果我想获取 2016 年的记录,那么我该如何使用 Laravel 关系方法来做到这一点?

以下是两个表的 Elequent 模型:
class A extends Model{  

public function b(){
return this->hasMany('B');
}
}


class B extends Model{
public function a(){
return $this->belongsTo('A');
}
}

Code to fetch records of id 1:

$data = A::with('b')->find(1)->toArray();

上面的请求为我提供了表 B 中 id 1 的所有数据,但我也想输入相应的年份条件。

有谁知道,我可以这样做吗?请分享您的解决方案。

谢谢

最佳答案

您必须限制急切的负载,使用数组作为 with() 的参数,使用关系名称作为键,闭包作为值:

$data = A::with([
'b' => function ($query) {
$query->where('year', '=', '2016');
},
])->find(1)->toArray();

闭包会自动注入(inject) Query Builder 的一个实例,它允许您过滤您急切加载的模型。

官方文档中对应部分: https://laravel.com/docs/5.4/eloquent-relationships#constraining-eager-loads

关于laravel - 如何在 Laravel Eloquent 关系中添加多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053851/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com