【发布时间】:2015-06-06 11:59:39
【问题描述】:
所以我正在使用 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。
这就是我在控制器中运行的。
$sales= AdSale::where('userId','=', 1)->get();
$impressions = $sales->impressions();
现在我对此的期望是我的 $impressions 变量将具有与 adSaleId 相关的 AdImpressions 条目,但是我得到未定义的函数,因为有多个值返回到 $saleLocation。如果我将其更改为 ->frist();或者在 $saleLocation 上做一个 foreach 它可以工作,但这不起作用。我需要能够从整体印象中汇总价值。任何信息都会很棒。
【问题讨论】:
-
您确定
hasOne是AdSale的正确关系吗?听起来更像是hasMany,不是吗?我的回答假设是后者,但可能甚至适用于前者。
标签: php mysql laravel model eloquent