首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雄辩地选择所有具有多对多关系的表

雄辩地选择所有具有多对多关系的表
EN

Stack Overflow用户
提问于 2021-05-23 07:09:50
回答 1查看 26关注 0票数 0

我有3个表(workflow、user、workflow_user),我想选择workflow_user表的view列。

代码语言:javascript
复制
class Workflow extends Model
{

    public function user()
    {
        return $this->belongsToMany(User::class,'workflow_user');
    }
}
代码语言:javascript
复制
class User extends Model
{

    public function works()
    {
        //return $this->belongsToMany(Role::class);
        return $this->belongsToMany(Workflow1::class,'workflow_user');
    }
}

workflow_user表

代码语言:javascript
复制
class WorkflowUser extends Model
{

    protected $table = 'workflow_user';
    
    protected $fillable = [
        'workflow1_id','user_id','view'
    ];

    protected $primaryKey = 'id';
    
    public $timestamps = false;
}

为了从workflow_user表中获取数据,我这样做

$workflow = User::find($idconnect)->works()->orderBy('created_at','desc')->paginate(10);

当我发出这个请求时,它没有向我提供workflow_user(workflow1_id,user_id,view)表的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-23 07:20:11

如果您有一个用于数据透视表的模型,则应该让它扩展Pivot类,并在关系的定义中使用它。

此外,您还需要在查询结果中手动包含不是外部in的字段。

代码语言:javascript
复制
class Workflow extends Model
{
    public function user()
    {
        return $this->belongsToMany(User::class, 'workflow_user', 'workflow_id', 'user_id')
                    ->using(WorkflowUser::class)
                    ->withPivot(['id', 'view']);
    }
}
代码语言:javascript
复制
class User extends Model
{
    public function works()
    {
        return $this->belongsToMany(Workflow::class, 'workflow_user', 'user_id', 'workflow_id')
                    ->using(WorkflowUser::class)
                    ->withPivot(['id', 'view']);
    }
}

workflow_user表

代码语言:javascript
复制
class WorkflowUser extends Pivot
{
    protected $table = 'workflow_user';    
    protected $fillable = ['workflow_id', 'user_id', 'view'];
    protected $primaryKey = 'id';
    public $incrementing = true;
    public $timestamps = false;
}
代码语言:javascript
复制
$workflow = User::findOrFail($idconnect)
                ->works()
                ->orderBy('created_at', 'desc')
                ->paginate(10);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67654863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档