Php 雄辩和连接不会保留模型关系
有两种型号Php 雄辩和连接不会保留模型关系,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,有两种型号产品和变型,其中产品有许多变型,而变型属于产品。这两个模型还包含许多其他关系 问题:您如何使用Eloquent选择所有变体->where('color','red')及其相关产品必须满足->where('price','>'50')?必须保留返回结果集中变量的所有关系 当在雄辩模型上使用连接时,除了已连接的产品之外,所有关系都将丢失。例如:$variant->product->id可以工作,但不能$variant->someOtherModel->id $variants =Varia
产品
和变型
,其中产品
有许多变型
,而变型
属于产品
。这两个模型还包含许多其他关系
问题:您如何使用Eloquent选择所有变体->where('color','red')
及其相关产品必须满足->where('price','>'50')
?必须保留返回结果集中变量的所有关系
当在雄辩模型上使用连接时,除了已连接的产品
之外,所有关系都将丢失。例如:$variant->product->id
可以工作,但不能$variant->someOtherModel->id
$variants =Variants::where('color', 'red')
->join('products', 'variants.product_id', '=', 'products.id')
->where('product.price', '>', 10)
->paginate(10);
foreach($variants as $variant) {
echo $variant->product->id; //works
echo $variant->someOtherModel->id; // error, undefined function
}
如何维护所有$variant
的关系
每个WHERE
子句似乎都是使用或链接的,而不是使用和链接的!这太疯狂了
$variants = Variant::where('color', 'red')
->with(array('Product' => function($query) {
if(Input::get('price') $query->where('price', '>', 10);
if(Input::get('brand') $query->where('brand', Input::get('brand'));
}))
->paginate(10);
即时负载约束可以解决此问题:
$Variants =Variants::where('color', 'red')
->with(array(
'Product' => function($query) {
$query->where('price', '>', 10);
}
,'OtherModel'
,'FooBar'
))
->paginate(10);
$Variants=Variants::其中('color','red')
->带(数组)(
'Product'=>函数($query){
$query->where('price','>',10);
}
“其他模型”
“FooBar”
))
->分页(10);如果我尝试在闭包中使用更多的->where()
,则where
子句似乎是使用或链接的,而不是使用和链接的。我们如何强制使用和?使用一些其他代码更新了原始帖子。请尝试添加高级andWhere()查询:。您能打印出原始查询和新查询的执行结果吗?