簡體   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