我正在尝试从左右类别树中恢复产品数据。
到目前为止,这是我的代码:
$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');
}
}
答案 0 :(得分:1)
你实际上可以以更好的方式做到这一点。您可以查询该类别中的所有产品,而不是先获取类别然后为每个类别加载产品。
我们将使用允许我们设置关系条件的whereHas
。 Laravel 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);
对于这个愚蠢的问题感到抱歉,我正在应用错误的焦点