【发布时间】:2015-06-29 04:59:24
【问题描述】:
我有三个数据库表:
+------+-----------+---------------------+
| user | user_type | user_type_relations |
+------+-----------+---------------------+
每个用户可以有多种类型,但一种用户类型只能有一个用户。为了存储这个关系,我使用了第三个关系表,结构如下:
+---------------------+
| user_type_relations |
+---------------------+
| id |
| user_id |
| user_type_id |
+---------------------+
我在我的模型中定义了这样的关系:
User模特:
public function userTypeRelations()
{
return $this->hasMany('UserTypeRelations', 'user_id', 'id');
}
UserType模特:
public function userTypeRelation()
{
return $this->hasMany('UserTypeRelations', 'user_type_id', 'id');
}
UserTypeRelations模特:
public function user()
{
return $this->hasMany('User', 'id', 'user_id');
}
public function userType()
{
return $this->hasMany('UserType', 'id', 'user_type_id');
}
这就是我尝试在控制器中访问特定用户的用户类型,然后将其传递给视图的方式:
$users = User::with('userTypeRelations')->with('userType')->orderBy($order)->where('status', 'active')->paginate(10);
我以为首先我会得到关系表的值,然后我会很容易地得到每个用户的用户类型,但是我得到了以下错误:
BadMethodCallException
Call to undefined method Illuminate\Database\Query\Builder::userType()
我做错了什么?
【问题讨论】:
标签: php laravel model-view-controller orm database-relations