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