Laravel:如何将模型推入变量?

时间:2014-11-21 06:23:26

标签: laravel eloquent push

我正在尝试从左右类别树中恢复产品数据。

到目前为止,这是我的代码:

$branches = Category::whereBetween('left', array($category->left, $category->right))
    ->get();

foreach ($branches as $branch) {
    $products = $branch->product;
}

我如何对$ products进行+ =或push操作才能获得每个分支的所有产品?

非常感谢

编辑:

这些是我的模型类:

class Category extends Eloquent {
    protected $fillable = array('left', 'right', 'user');

    public function producto(){
        return $this->hasMany('Product');

    }
}


class Product extends Eloquent {
    protected $fillable = array('nombre', 'category', 'proveedor', 'costo', 'precio', 'tiempo_de_elaboracion', 'usuario', 'peso', 'precio_minimo', 'destacado');

    public function category(){
        return $this->belongsTo('Category');
    }

    public function image(){
        return $this->hasMany('Image');
    }
}

4 个答案:

答案 0 :(得分:1)

你实际上可以以更好的方式做到这一点。您可以查询该类别中的所有产品,而不是先获取类别然后为每个类别加载产品。

我们将使用允许我们设置关系条件的whereHasLaravel docs

$products = Product::whereHas('category', function($q) use ($category){
    $q->whereBetween('left', array($category->left, $category->right));
})->get();

答案 1 :(得分:0)

将项目推送到数组中:

$products = array();
foreach ($branches as $branch) {
    $products[] = $branch->product;
}

答案 2 :(得分:0)

分支与产品之间有什么关系? HasMany我想?你如何在Branch模型中定义这种关系?如果在其定义中保留逻辑语法,则应在代码中将其称为$branch->products ...

如果一切正常并且检索到数据,请使用

$products = [];
foreach ($branches as $branch) {
    $products += $branch->products;
}

答案 3 :(得分:0)

最后,我首先查找分支并将它们放入列表中:

$array = $branches->lists('id');

然后,我在这个分支中寻找产品:

$products = Product::whereIn('category_id', $array)->paginate(24);

对于这个愚蠢的问题感到抱歉,我正在应用错误的焦点