繁体   English   中英

Laravel有多对多关系?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM