gpt4 book ai didi

php - Laravel 多个多对多关系?

转载 作者:行者123 更新时间:2023-11-29 03:32:00 25 4
gpt4 key购买 nike

所以我在使用 laravel 时遇到了一个问题,所以我有关系模型 AdSale,然后我设置了与 AdImpressions 的 hasOne 关系。因此,例如,假设我获取了 userId = 1 的所有 AdSale 记录。我得到了 5 个不同的行,对于这 5 行中的每一行,我都有 5 个匹配的 adImpression 行,并包含有关点击次数和展示次数的信息。我的最终目标是获取 AdImpression 行。但是,当我运行我的 Impressions() 方法时,我得到了未定义的方法。但是,如果我单独对我的 AdSale 记录执行 foreach,然后运行我的 Impresssions() 方法,它就会起作用。所以这是我的代码

class AdSale extends Eloquent{

protected $table = 'AdSale';
public function impressions()
{
return $this->hasOne('AdImpression','adSaleId','id');
}

}

在这里,我通过 AdImpression 表中的 adSaleId 将我的 AdSale 连接到其各自的 AdImpression。

这就是我在 Controller 中运行的内容。

$sales= AdSale::where('userId','=', 1)->get();
$impressions = $sales->impressions();

现在我期望的是我的 $impressions 变量将具有与 adSaleId 相关的 AdImpressions 条目,但是我得到未定义的函数,因为有多个值返回到 $saleLocation。如果我将其更改为 ->frist();或在 $saleLocation 上执行 foreach 它可以工作,但不会工作。我需要能够从整体印象中得出总值(value)。任何信息都会很棒。

最佳答案

I get 5 different rows back, for each of those 5 rows I have 5 adImpression rows that match and have info about clicks and impressions.

基于此,我假设您使用了错误的关系。

<强>1。更改 AdSale 模型关系

return $this->hasMany('AdImpression','adSaleId');

<强>2。使用 eager loading :

$sales = AdSale::with('impressions')->where('userId', 1)->get();

<强>3。作为成员访问,而不是方法(关系已经加载)

foreach($sales as $sale) {
foreach($sale->impressions as $impression) {
//
}
}

<强>4。获取展示总和

$sale->impressions->count()

关于php - Laravel 多个多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com