当前位置: 首页 > 知识库问答 >
问题:

通过hasManyThrough Laravel Elotent获取多个表

尉迟鸿熙
2023-03-14

数据库

我对数据库有点陌生,我制作了这个小数据库,但从中获取数据时遇到了问题。我试图从登录的用户那里获取所有参赛者,它工作正常,但是如果我输入$biges=$user-

在用户模型中,我有以下关系:

public function pigeons(){
        return $this->hasMany('App\Pigeon');
    }

    public function racers(){
        return $this->hasManyThrough('App\Racer', 'App\Pigeon');
    }

这是鸽子模型:

public function user(){
        return $this->belongsTo('App\User');
    }

    public function racer(){
        return $this->hasMany('App\Racer');
    }
}

这就是事件模型

public function race(){
        return $this->hasOne('App\Race');
    }

    public function racers(){
        return $this->hasMany('App\Racer');
    }

这就是我的EventsController在使用工作替代方法和注释无效时的样子。

public function upcoming(){
        $id = auth()->user()->id;
        $user = User::find($id);
        $pigeons = DB::table('racers')->leftJoin('pigeons', 'racers.pigeon_id', '=', 'pigeons.id')->where('pigeons.user_id', '=', $id)->get();

        //$pigeons = $user->racers;

        return view('events.upcoming')->with('pigeons', $pigeons);
    }

这就是我从$user得到的-

[{id: 1,pigeon_id: 14,user_id: 4,event_id: 1,位置: 0,created_at: null,updated_at: null},{id: 2,pigeon_id: 15,user_id: 4,event_id: 1,位置: 0,created_at: null,updated_at: null},{id: 3,pigeon_id:16、user_id:4、event_id:1、位置:0、created_at:空、updated_at:空}]

这就是我想要得到的,它也不正确,因为我应该得到id: 1,但我想通过查看这些额外的数据,如性别,颜色,能力(但它们在鸽子表中,而不是在赛车手中)。

【id】:14,“鸽子id”:14,“用户id”:4,“事件id”:1,“位置”:0,“创建于”:“2018-09-27 10:01:04”,“更新于”:“2018-09-27 10:01:04”,“性别”:“母鸡”,“颜色”:“蓝色”,“能力”:38},{“id”:15,“用户id”:4,“事件id”:1,“位置”:0,“创建于”:“2018-09-27 10:01:04”,“更新于”:“2018-09-27 10:01:04”,“性别”:“颜色”,“能力”:“母鸡”,“蓝色”::48},{“id”:16,“鸽子id”:16,“用户id”:4,“事件id”:1,“位置”:0,“创建于”:“2018-09-27 10:01:04”,“更新于”:“2018-09-27 10:01:04”,“性别”:“公鸡”,“颜色”:“蓝色”,“能力”:11}]


共有1个答案

雍嘉勋
2023-03-14

为了得到鸽子,你必须做的是$鸽子=$user-

 类似资料:
  • 我的目标是得到两个匹配: 非常感谢你的帮助。

  • 我的项目中有:https://www.primefaces.org/primereact/#/fullcalendar 我一天有2个事件,我通过以下代码找到了第一个事件: 我需要找到第二个或更多的事件。 UPD如何在第二天工作//div[@class='fc-entent-bone eton'][.//td[@data-date='2019-09-03']]//tbody/tr/td[计数(//t

  • 问题内容: 我需要知道我的用户是否已连接。为此,我想读取在服务器端通过express-session设置的cookie: 我尝试使用react-cookie,但是它不起作用,但是我复制/粘贴了npm react-cookie doc: 这很奇怪,因为可以呈现正确的结果,但是我不知道如何处理: 问题答案: 您可以使用软件包,也可以使用命令进行安装。 文档:https : //github.com/j

  • 我有一个和我自己的

  • 问题内容: 我在表中有以下几列: SCORE_PERSON_ID是一个变量。我需要对每个SCORE_PERSON_ID的SCORE_VOTE求和。 您能建议一个好的方法吗? 问题答案: 您需要一个和聚合函数,例如或