多对多关联怎么无条件得到所有数据?

// 用户
class User extends Model
{
    public int $id;
    public int $type;  // 1正常,2会员
    public string $name;

    public function nodes(){
        if ($this->type == 2) {
            // 这里当用户类型是2的时候,怎么返回所有节点
            return [];
        } else {
            // 多对多关联
            return $this->belongsToMany(Node::class);
        }
    }
}
// 节点
class Node extends Model
{
    public int $id;
    public string $name;
}
// 中间表
class UserNode extends Model
{
    public int $id;
    public int $user_id;
    public int $node_id;
}

上面我定义了三个模型(举例子用的),主要是想知道,当用户类型为2,即会员的时候,怎么得到所有的节点???

如果用户类型是1的时候,返回的是\Illuminate\Database\Eloquent\Relations\BelongsToMany 类型。

那么如果用户类型是2的时候,怎么做也可以返回这个类型,但是数据是节点表里的所有数据,相当于表链接查询的时候没有条件?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

belongsToMany是来定义关联关系的,按照你的描述type为2的时候,user和node是没有任何关联关系存在的,建议模型里定义一个模型获取器来处理,判断type类型返回相关的数据

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!