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

// 用户
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的时候,怎么做也可以返回这个类型,但是数据是节点表里的所有数据,相当于表链接查询的时候没有条件?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

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

2年前 评论

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