【问题标题】:Laravel: Multiple model for one tableLaravel:一张桌子的多个模型
【发布时间】:2017-10-20 19:45:27
【问题描述】:

我的目标:维护所有用户(代理、管理员、学生、教师或可以担任更多角色)在表中,但每个单独的模型/角色能够根据他们所拥有的角色引用同一表上的另一个 id $admins = Agent::with('agent')->get();

注意:我已经有表 rolesuser_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


【解决方案1】:

你为什么不让它成为一个自我参考?

class Agent extends Eloquent {

public function parent()
{
    return $this->belongsTo('App\Agent', 'parent_id');
}

public function children()
{
    return $this->hasMany('App\Agent', 'parent_id');
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2014-07-24
    • 2017-02-07
    • 2011-11-17
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多