【发布时间】:2017-10-20 19:45:27
【问题描述】:
我的目标:维护所有用户(代理、管理员、学生、教师或可以担任更多角色)在表中,但每个单独的模型/角色能够根据他们所拥有的角色引用同一表上的另一个 id $admins = Agent::with('agent')->get();
注意:我已经有表 roles 和 user_roles 工作得很好
users
===========
id
username
password
fullname
agent_student (one agent has many students but one student belongsTo one agent)
===========
id
agent_id
student_id
admin_agent (one admin has many agents but one agent belongsTo one admin)
===========
id
admin_id
agent_id
app/Agent.php:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Agent extends User
{
protected $table = 'users';
public function student()
{
return $this->hasMany('App\Student', 'id');
}
function agent_student()
{
return $this->hasMany('App\AgentStudent', 'id');
}
}
app/Student.php:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends User
{
protected $table = 'users';
public function agent()
{
return $this->belongsTo('App\Agent', 'id');
}
public function agent_student()
{
return $this->hasOne('App\AgentStudent', 'student_id');
}
}
app/AgentStudent.php:
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserStudent extends Model
{
protected $table = 'user_student';
function student()
{
return $this->hasOne('App\Student', 'id');
}
function agent()
{
return $this->belongsTo('App\Agent', 'id');
}
}
【问题讨论】:
-
我看不出你的问题。而且您的问题格式错误
-
示例代理 (1, 2) 学生 ID (3, 4, 5, 6) agent_student (1=>3, 1=>4, 2=>5, 2=>6) (用户如果我从控制器 Student::find(3)->with('agent')->get() 调用,id 3 和 4 属于用户 id 1.....用户 id 5 和 6 属于用户 id 2) ;我希望它返回用户 ID 1 而不是用户 ID 3
标签: laravel model eloquent relationships