【问题标题】:Laravel Relationships: hasManyThrough, belongsTo, belongsToManyLaravel 关系:hasManyThrough、belongsTo、belongsToMany
【发布时间】:2018-03-08 01:43:06
【问题描述】:

嘿,我在这里有一个 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:一个普通的用户认证表。 (与user_block_rangesbelongsToMany 关系)

event:存储事件信息。 (与block_rangehasMany 关系)

block_range:保存事件时间块。 (与eventbelongsTo 关系)

真正的问题是:如何获取用户的所有事件?通过user_block_ranges 然后block_range 关系?也许使用hasManyThrough

提前致谢。

【问题讨论】:

标签: laravel laravel-5


【解决方案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;
}

【讨论】:

  • 这对我有用,非常感谢。我非常感谢您的回答,但是,没有办法用 Laravel ORM 做到这一点? :'(
  • 不幸的是,我还没有找到一种仅使用 Laravel 关系的简单方法:(
猜你喜欢
  • 2023-03-08
  • 2020-02-02
  • 2014-03-09
  • 2015-09-27
  • 2018-10-18
  • 2023-03-09
  • 2019-05-12
  • 2018-07-24
  • 2020-10-14
相关资源
最近更新 更多