【问题标题】:add hasMany relationship query laravel?添加hasMany关系查询laravel?
【发布时间】:2022-01-15 15:44:14
【问题描述】:

我怎么有很多关系, 获取最后 5 个用户,我尝试使用模型和女巫 hasMany 关系显示为空。 我已经做了很多测试,每次查询获取最后5个用户时,关系总是有问题

查询:

   $minute = Minute_Report::Query()->whereBetween('minutos.fecha', [$from, $to])
                ->join('clients', 'minutos.cliente', '=', 'clients.id')
                ->join('users as asesor', 'minutos.psiquico', '=', 'asesor.id')
                ->select(
                    'minutos.id',
                    'clients.code',
                    'clients.id as client',
                    \DB::raw("CONCAT(clients.firstname_c,clients.lastname_c) As client_full_name"),
                    \DB::raw("CONCAT(asesor.first_name,asesor.last_name) As asesor_full_name"),
                    'minutos.date2 As fechas',
                    'minutos.minutos',
                    \DB::raw('(CASE 
                WHEN minutos.motive = "MINUTOS GRATIS" THEN "GRATIS" 
                ELSE "PAGO" 
                END) AS status_lable'),
                    'minutos.motive',
                    'minutos.time_a',
    
                );
    
            $data = $minute->get();

结果:

[
asesor_full_name: "Lucero /Liliana Fuentes"
client: 2079
client_full_name: "NICOLE MSALLS OCACIO"
code: 2078
fechas: "2021-01-01 09:40:44"
id: 64208
minutos: 27
motive: "MINUTOS GRATIS"
status_lable: "GRATIS"
time_a: "40"
]

成功:

[
    asesor_full_name: "Lucero /Liliana Fuentes"
    client: 2079
    client_full_name: "NICOLE MSALLS OCACIO"
    code: 2078
    fechas: "2021-01-01 09:40:44"
    id: 64208
    minutos: 27
    motive: "MINUTOS GRATIS"
    status_lable: "GRATIS"
    time_a: "40"
    users[
        1,
        2,
        3,
        5
     ]
    ]

【问题讨论】:

    标签: mysql laravel query-builder


    【解决方案1】:

    我不知道我是否做对了,但我会尽力提供帮助。

    您是否在 Minute_Report 模型中定义了与 User 模型的关系?什么是关系列?应该是这样的

    public function users()
    {
        return $this->hasMany(User::class, 'xxx');
    }
    

    在您的 Minute_Report 模型上。 'xxx' 是指 users 表上的关系列名。

    然后,您应该在查询中添加“with('users')”。像这样:

    $minute = Minute_Report::Query()->whereBetween('minutos.fecha', [$from, $to])
                    ->join('clients', 'minutos.cliente', '=', 'clients.id')
                    ->join('users as asesor', 'minutos.psiquico', '=', 'asesor.id')
                    ->select(
                        'minutos.id',
                        'clients.code',
                        'clients.id as client',
                        \DB::raw("CONCAT(clients.firstname_c,clients.lastname_c) As client_full_name"),
                        \DB::raw("CONCAT(asesor.first_name,asesor.last_name) As asesor_full_name"),
                        'minutos.date2 As fechas',
                        'minutos.minutos',
                        \DB::raw('(CASE 
                    WHEN minutos.motive = "MINUTOS GRATIS" THEN "GRATIS" 
                    ELSE "PAGO" 
                    END) AS status_lable'),
                        'minutos.motive',
                        'minutos.time_a',
    
                )->with('users');
    
            $data = $minute->get();
    

    【讨论】:

    • 返回空:/
    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2020-05-03
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多