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()查询:。您能打印出原始查询和新查询的执行结果吗?