2017-09-26 136 views
1

Heyy,我有一個Laravel項目在這裏,你們能幫我解決這個關係問題嗎?Laravel關係:hasManyThrough,belongsTo,belongsToMany

我有以下的數據庫結構:

users 
    id 
    name 
    email 
    password 

event 
    id 
    description 
    city_id 

block_range 
    id 
    event_id 

user_block_ranges 
    user_id 
    block_range_id 

說明

users:一個正常的用戶認證表。 (與有belongsToMany關係)

event:存儲活動信息。 (與block_rangehasMany關係)

block_range:保存事件的時間塊。 (具有belongsToevent的關係)

真正的問題是:我如何獲取用戶的所有事件?通過user_block_ranges然後block_range的關係?也許使用hasManyThrough

在此先感謝。

+1

你有同樣的問題描述https://stackoverflow.com/questions/46432996/laravel-5-4-table-relationship-between-3-small-tables,唯一的區別,你將有鏈4元素 – Aleksandrs

+0

@Aleksandrs即使有ManyToMany表,我也可以這樣做嗎? – Rukado

回答

1

我相信你的模型是這樣的:

用戶模式

class User extends Model 
{ 
    public function blockRanges() 
    { 
     return $this->belongsToMany('App\BlockRange', 'user_block_ranges', 'user_id', 'block_range_id'); 
    } 
} 

塊範圍模式

class BlockRange extends Model 
{ 
    public function event() 
    { 
     return $this->belongsTo('App\Event'); 
    } 
} 

爲了讓你能做到這一點,用戶的所有事件:

$user = App\User::find(1); 

$events = array(); 

foreach ($user->blockRanges as $block_range) { 
    $events = $block_range->event; 
} 
+0

這對我很有用,非常感謝。我真的很感謝你的回答,但是,沒有辦法用Laravel ORM來做到這一點? :'( – Rukado

+1

不幸的是,我還沒有找到一個簡單的方法來做到這一點,只有與Laravel關係:( –