代码之家  ›  专栏  ›  技术社区  ›  Prafulla Kumar Sahu umang naik

多列关联时如何定义拉维关系

  •  0
  • Prafulla Kumar Sahu umang naik  · 技术社区  · 7 年前

    我有下面提到的模型, 如何在它上面实现拉威尔雄辩的关系?

    id
    name
    

    后模型

    id
    title
    desc
    created_by = foreign key on User->id
    

    id
    post_id
    assigned_by
    assigned_to
    

    post_id
    assigned_by  = foreign key on User->id
    assigned_to  = foreign key on User->id
    

    邮政编码
    assigned_by=用户上的外键->身份证件
    分配给=用户上的外键->身份证件
    

    邮政编码
    分配给=用户上的外键->身份证件
    

    第五阶段(后期模型)

    邮政编码
    assigned_by=用户上的外键->身份证件
    

    第六阶段(后期模型)

    assigned_by=用户上的外键->身份证件
    分配给=用户上的外键->身份证件
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   Jeff    7 年前

    public function assigner(){
        return $this->belongsTo(User::class, 'assigned_by');
    }
    public function assignee(){
        return $this->belongsTo(User::class, 'assigned_to');
    }
    
        2
  •  1
  •   simonecosci    7 年前

    用户模型应具有 hasMany 关系类型如下:

    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class User extends Model {
        //...
        public function posts() {
            return $this->hasMany(Post::class);
        }
    }
    

    帖子通过属性创建属于用户

    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class Post extends Model {
        //...
        public function createdBy() {
            return $this->belongsTo(User::class, 'created_by');
        }
    }
    

    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class PostStageOneModel extends Model {
        //...
        public function post() {
            return $this->belongsTo(Post::class);
        }
        public function assignedTo() {
            return $this->belongsTo(User::class, 'assigned_to');
        }
        public function assignedBy() {
            return $this->belongsTo(User::class, 'assigned_by');
        }
    }
    

        3
  •  0
  •   Prafulla Kumar Sahu umang naik    7 年前

    我是通过定义以下关系来实现的

    在后期模型中

    public function assignedPost() {
        return $this->belongsTo(Post::class, 'post_id', 'post_id');
    }
    
    public function assigner()
    {
        return $this->belongsTo(User::class, 'assigned_by', 'id');
    }
    
    public function assignee()
    {
        return $this->belongsTo(User::class, 'assigned_to', 'id');
    }
    

    public function identifiedBy() {
        return $this->belongsTo(User::class, 'identified_by', 'id');
    }
    
    public function postAssignedBy() {
        return $this->hasManyThrough(User::class, PostStageOneModel::class, 'post_id', 'id', 'post_id', 'assigned_by' );
    }
    
    public function postAssignedTo() {
        return $this->hasManyThrough(User::class, PostStageOneModel::class, 'post_id', 'id', 'post_id', 'assigned_to' );
    }
    

    在用户模型中

    public function assigned()
    {
        return $this->hasMany(PostStageOneModel::class, 'assigned_by', 'id');
    }
    
    public function assignedTo()
    {
        return $this->hasMany(PostStageOneModel::class, 'assigned_to', 'id');
    }