[英]laravel whereHas in relationships “where not working”
i need help for Laravel 4.2 我需要Laravel 4.2的帮助
the models are: //1. 这些模型是:// 1。 model kelengkapan
模型kelengkapan
class Kelengkapan extends Eloquent{
public function detilKelengkapan(){
return $this->hasMany('DetilKelengkapan', 'id_kelengkapan');
}
}
// 2. model DetilKelengkapan // 2.模型DetilKelengkapan
class DetilKelengkapan extends Eloquent{
public function tDetilKelengkapanPaket(){
return $this->hasMany('TDetilKelengkapanPaket', 'id_detil_kelengkapan');
}
public function kelengkapan(){
return $this->belongsTo('Kelengkapan', 'id_kelengkapan');
}
}
// 3. model TDetilKelengkapanPaket // 3.模型TDetilKelengkapanPaket
class TDetilKelengkapanPaket extends Eloquent{
public function detilKelengkapan(){
return $this->belongsTo('DetilKelengkapan', 'id_detil_kelengkapan');
}
}
the controller is: 控制器是:
$kelengkapan = Kelengkapan::with('detilKelengkapan.tDetilKelengkapanPaket')
->whereHas('detilKelengkapan.tDetilKelengkapanPaket', function($q) use ($id){
$q->where('id_paket', $paket);
})->get();
but the result has not filtering by "id_paket" but showed all data. 但结果尚未按“ id_paket”进行过滤,但显示了所有数据。 thanks.
谢谢。 (newbie)
(新手)
Your Code: 您的代码:
$kelengkapan = Kelengkapan::with('detilKelengkapan.tDetilKelengkapanPaket')
->whereHas('detilKelengkapan.tDetilKelengkapanPaket', function($q) use ($id){
$q->where('id_paket', $paket);
})->get();
The correct Code: 正确的代码:
$kelengkapan = Kelengkapan::with('detilKelengkapan.tDetilKelengkapanPaket')
->whereHas('detilKelengkapan.tDetilKelengkapanPaket', function($q) use ($id){
//the function should return the $q variable.
return $q->where('id_paket', $id);
})->get();
Explanation: 说明:
whereHas
function has 2 compulsory arguments. whereHas
具有2个whereHas
参数。 A relationship function name, and a closure. 关系函数名称和闭包。 The closure must
return
a query
object so that filters can be chained. 闭包必须
return
query
对象,以便可以链接过滤器。
Source: http://laravel.com/docs/4.2/eloquent#querying-relations 资料来源: http : //laravel.com/docs/4.2/eloquent#querying-relations
In there whereHas function you pass $id
variable in the closure but you are using $packet
inside. 在其中的hasHas函数中,您在闭包中传递了
$id
变量,但是您在其中使用了$packet
。
$kelengkapan = Kelengkapan::with('detilKelengkapan.tDetilKelengkapanPaket')
->whereHas('detilKelengkapan.tDetilKelengkapanPaket', function($q) use ($id){
$q->where('id_paket', $id);
//---------------------^
})->get();
Try it and let me know the result. 试试看,让我知道结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.