2017-05-11 58 views
1

我在我的項目中有兩個關係模型。 CarPool &騎行&用戶。關係不能在laravel雄辯

在我的拼車模式

public $with=['user','ride']; 

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

public function ride(){ 
    return $this->hasMany('App\Ride'); 
} 

在我的順風車模型

public $with=['user','carpool']; 

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

public function carpool(){ 
    return $this->belongsTo('App\CarPool'); 
} 

在我的預期情況下,當用戶輸入「我的乘駕」網頁,它會顯示所有乘坐了由用戶。 (例如用戶乘坐3次)。所以列表中有3列。每個乘車專欄都有拼車信息和司機信息。

在我的控制器中,我使用它來獲取屬於用戶的駕駛。

$user_id=Auth::user()->id; 

    $rides= Ride::where('user_id',$user_id)->get(); 

但我檢查結果後。似乎拼車關係沒有連接,因爲有空。我的關係不正確?

enter image description here

我在數據庫 car_pools表表 enter image description here

乘坐表0​​enter image description here

+1

你可以發表你的表結構的兩個表嗎? – Ian

+0

你確定'Ride'與一個'Carpool'有關嗎?請嘗試'dd($ rides [0] - >拼車);' –

+0

@lan我更新了我的表格,請檢查 – Eann

回答

0

它真的象你沒有在已經與拼車ID的ridescar_pool_id領域在裏面。

如果你有這樣的領域,但名稱不同的是,外鍵名稱添加到關係:

public function carpool() 
{ 
    return $this->belongsTo('App\CarPool', 'custom_column_name'); 
} 
+0

是的,我在我的遊樂設施表中有car_pool_id。我上傳了我的數據庫表,請檢查。 – Eann

1

問題解決了,雖然不是鷹裝載,但仍然可以在其他方面的工作。我通過取消拼車改變了我的駕駛模式。所以,現在是

public $with=['user']; 

然後調用由{{ $ride->carpool->title }} 不相同的數據與我的期望,但至少工作。

0

在給定關係映射函數中的外鍵和主鍵後嘗試。 因爲有時如果你只是給外鍵,那麼模型會嘗試用主鍵連接到另一個模型。如果您未使用關係主鍵,則在關係函數中指定另一個關鍵字。