php – 如何从Laravel中的hasMany()关系中获取所有结果?
例如,我有一个产品,我有一个BaseProduct.
在产品的模型中,我指定了以下内容: //In class Product public function BaseProduct() { return $this->belongsTo("BaseProduct","BaseProductId"); } 在BaseProduct中,我指定了以下关系: //In class BaseProduct public function Products() { return $this->hasMany("Product","ProductId"); } 如果我选择产品,如下: $Product::first() 我可以通过执行以下操作来获取BaseProduct: $Product::first()->BaseProduct()->get(); 我不是从中获取结果的数组,而是如何获得BaseProduct的模型,因此我可以获得BaseProduct的所有子项,这意味着所有具有与此BaseProduct相关的外键的产品. 我试过BaseProduct() – > all();相反,但它不是一个有效的方法. 编辑: 我创建了以下函数调用链 – 但它很糟糕. return BaseProduct::find(Product::first()->BaseProduct()->getResults()['BaseProductId'])->Products()->getResults(); 最终编辑: 我在BaseProduct模型中犯了一个错误.在Products()函数中,我指定了返回$this-> hasMany(“Product”,“ProductId”);其中ProductId应该是BaseProductId. 在我修复之后,我可以成功使用: Product::first()->BaseProduct->products; 正如Sheikh Heera所解释的那样.
要获得BaseProduct的孩子,您可以尝试这样做:
$bp = BaseProduct::with('Products')->get(); 现在,您有一个BaseProduct集合,因此,您可以使用以下内容: $bp->first()->products 或者从集合中获取第二个项目 $bp->get(1)->products 此外,您可以运行这样的循环(最有可能在传递后的视图中): // From the controller $bp = BaseProduct::with('Products')->get(); return View::make('view_name')->with('baseProduct',$bp); 在视图中 @foreach($baseProduct->products as $product) {{ $product->field_name }} @endforeach 更新:是的,你可以试试这个 $product = Product::first(); $baseProduct = $product->BaseProduct; // Dump all children/products of this BaseProduct dd($baseProduct->products->toArray()); 你可以链接: Product::first()->BaseProduct->products; 更新:您的表结构应如下所示: 表:baseproduct: id(pk) | some_field | another_field 表:产品: id(pk) | baseproduct_id(fk) | another_field 根据这个表结构,关系应该是 // BaseProduct public function Products() { return $this->hasMany("Product"); } // Product public function Products() { // second parameter/baseproduct_id is optional unless // you have used something else than baseproduct_id return $this->belongsTo("BaseProduct","baseproduct_id"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |