Eloquent ORM 可选关系

3

只是一个简单的问题,我对Eloquent和关系不熟悉。

我想让我的数据库保持干净,所以我创建了一个User-Model和一个Administrator-Model。

现在我被关系卡住了... 我想做的是:

users表中,我有一个名为account_type的属性。

如果它被设置为adminadministrator,我想要将Administrator-Model“实现”到User-Model中。

我这样做完全错误吗?还是有一个简单的“Laravel风格”的解决方案?


1
你可以很容易地在 全局作用域 中使用这两个模型,但这在 5.1 的文档中没有提到。两个模型都将引用同一张表,但一个只会获取 account_type='admin' 的条目,而另一个则会获取剩下的(或者说所有的)条目。以下是如何在 L5 中实现全局作用域的方法:http://softonsofa.com/laravel-5-eloquent-global-scope-how-to/ - Jarek Tkaczyk
不错的功能,但对我来说不太适合,因为我想保持数据库的清洁。所以我不想在同一张表中存储用户和管理员相关的数据。无论如何还是谢谢! - Jan Schuermann
1个回答

2

无法在User中实现Administrator类,因为它不是接口。如果要使用Administrator类,请在User模型中建立关系。

public function admin()
{
    return $this->hasMany('Administrator');
}

那么,接下来,
$users = User::whereHas('admin', function($q) {
    $q->where('account_type', 'administrator'); // or admin
})->get();

如果你想要在管理员中创建 belongsTo 关系,请参考链接:Eloquent ORM


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接