Laravel Relationships:hasManyThrough,belongsTo,belongsToMany

时间:2017-09-26 18:09:34

标签: laravel laravel-5

嘿,我这里有一个Laravel项目,你能帮助我解决这个关于关系的问题吗?

我有以下数据库结构:

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有<{1}}的关系

user_block_ranges:存储活动信息。 (与event有<{1}}的关系

hasMany:保存事件的时间块。 (与block_range有<{1}}的关系

真正的问题是:我如何获得用户的所有事件?通过block_range然后belongsTo关系?也许使用event

提前致谢。

1 个答案:

答案 0 :(得分: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;
}