[英]Laravel multiple many to many relationships?
因此,我使用的是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,但该方法不起作用。 我需要能够从整体印象中得出总价值。 任何信息都很棒。
我得到5个不同的行,对于这5行中的每行,我都有5个adImpression行,这些行匹配并具有有关点击和展示的信息。
基于此,我认为您使用的是错误的关系。
1.更改AdSale模型关系
return $this->hasMany('AdImpression','adSaleId');
2.使用紧急加载 :
$sales = AdSale::with('impressions')->where('userId', 1)->get();
3.以成员身份访问,而不是方法访问(关系已经加载)
foreach($sales as $sale) {
foreach($sale->impressions as $impression) {
//
}
}
4.获取印象总数
$sale->impressions->count()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.