Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:一个表的多个模型_Laravel_Model_Eloquent_Relationships - Fatal编程技术网

Laravel:一个表的多个模型

Laravel:一个表的多个模型,laravel,model,eloquent,relationships,Laravel,Model,Eloquent,Relationships,我的目标:在表中维护所有用户(代理、管理员、学生、教师或更多角色),但每个模型/角色都能够根据其角色引用同一表上的另一个id$admins=Agent::with('Agent')->get() 注意:我已经有了表角色和用户角色,它们工作正常 users =========== id username password fullname agent_student (one agent has many students but one student belongsTo one agent)

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

注意:我已经有了表
角色
用户角色
,它们工作正常

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');
    }
}
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');
    }
}
app/AgentStudent.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');
    }
}
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');
    }
}

你为什么不把它作为自我介绍呢

class Agent extends Eloquent {

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

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

我看不出你有什么问题。你的问题是格式错误的示例代理(1,2)学生id(3,4,5,6)代理(1=>3,1=>4,2=>5,2=>6)(用户id 3和4属于用户id 1…..用户id 5和6属于用户id 2)如果我从控制器调用student::find(3)->with('agent')->get();我希望它返回用户id 1而不是用户id 3