如何在Laravel中查询长的“外来钥匙链”

时间:2019-07-11 07:51:59

标签: laravel foreign-keys relation

我正在使用MySQL和Laravel。

假设以下(简化的)数据库布局:

snippets
- id
- topic_id

topics
- id
- realm_id

realms
- id
- user_id

user
- id
- name

现在,例如,如果用户要删除一个代码段,那么我必须检查该代码段是否实际上属于该用户。

我现在正在做的是:

class Snippet extends Model
{
    public function owner()
    {
        return $this->topic->realm->owner;
    }
}

但这会向数据库触发四个查询,只是为了获取关联的用户。

此外,它与关系语法不一致:

\App\Snippet::find(1)->owner(), but
\App\Realm::find(1)->owner
  • 在Laravel中是否有更好的方法来访问遥远的关系?
  • 我应该抛弃Eloquent并手动加入桌子吗?
  • 每个表都应该有自己的user_id列(冗余,但更易于处理)吗?

0 个答案:

没有答案