Laravel 如何添加动态';其中';用()关系雄辩地表达ORM
我正在尝试这样做:Laravel 如何添加动态';其中';用()关系雄辩地表达ORM,laravel,eloquent,Laravel,Eloquent,我正在尝试这样做: $verfuegbarkeiten = Verfuegbarkeit::verfuegbar()->with('product', 'producer', 'producer.user', 'producer.user.ort')->where('product.kategorie_id', '=', $_GET['kat'])->get()->toArray(); $kat = $_GET['kat']; $verfuegbarkeiten = V
$verfuegbarkeiten = Verfuegbarkeit::verfuegbar()->with('product', 'producer', 'producer.user', 'producer.user.ort')->where('product.kategorie_id', '=', $_GET['kat'])->get()->toArray();
$kat = $_GET['kat'];
$verfuegbarkeiten = Verfuegbarkeit::verfuegbar()
->with('product', 'producer', 'producer.user', 'producer.user.ort')
->whereHas('product', function($query) use ($kat) {
$query->where('kat', $kat);
})
->get()
->toArray();
我想使用一个'where'子句,这样我只能在'product's attribute'kategorie_id'与get参数匹配的地方获得结果。我怎样才能在关系上“在哪里”?这个值可以是动态的,这对我来说非常重要,因此在相关模型中编写一个fix函数不是一个好的解决方案
您想要的每一个提示whereHas()
,文档如下:
就你的例子来说,这意味着类似这样的事情:
$verfuegbarkeiten = Verfuegbarkeit::verfuegbar()->with('product', 'producer', 'producer.user', 'producer.user.ort')->where('product.kategorie_id', '=', $_GET['kat'])->get()->toArray();
$kat = $_GET['kat'];
$verfuegbarkeiten = Verfuegbarkeit::verfuegbar()
->with('product', 'producer', 'producer.user', 'producer.user.ort')
->whereHas('product', function($query) use ($kat) {
$query->where('kat', $kat);
})
->get()
->toArray();
尽管我可能会补充说,在Laravel中通常不鼓励使用
$\u GET
。不幸的是,这不起作用,因为whereHas
约束只适用于特定的关系集合,而不适用于主表,所以它不会过滤掉数据。很抱歉@Filipkoblanski,我不太明白你的意思。这将得到所有Verfuegbarkeit对象,这些对象都具有产品匹配?kat=,这似乎正是他想要的。