加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 如何从Laravel中的hasMany()关系中获取所有结果?

发布时间:2020-12-14 19:41:48 所属栏目:大数据 来源:网络整理
导读:例如,我有一个产品,我有一个BaseProduct. 在产品的模型中,我指定了以下内容: //In class Productpublic function BaseProduct(){ return $this-belongsTo("BaseProduct","BaseProductId");} 在BaseProduct中,我指定了以下关系: //In class BaseProductpubl
例如,我有一个产品,我有一个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");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读