gpt4 book ai didi

mysql - 根据子模型/关系对父模型进行排序

转载 作者:行者123 更新时间:2023-11-29 03:17:38 25 4
gpt4 key购买 nike

我有一个名为appointments 的模型,每个约会都有一个option_id,它通过一对一的关系链接,option_id 也可以为 null。选项模型有一个属性 datetime_start。我想根据 option.datetime_start 对约会进行排序。

这是我的代码:

$appointments = $user->appointments()
->with(['option'
])
->get();

编辑:

预约模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Appointment extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function option()
{
return $this->hasOne(Option::class, 'id', 'option_id');
}
}

可选型号:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Option extends Model
{
protected $fillable = ["appointment_id",
"datetime_start"
];

public function appointment()
{
return $this->belongsTo(Appointment::class, 'id','appointment_id');
}
}

如有任何帮助,我们将不胜感激。

最佳答案

为了按相关Option 模型的列对Appointment 模型进行排序,您需要在查询中添加一个JOIN,以便您可以按相关字段排序:

$appointments = $user->appointments()
->leftJoin('options', 'options.appointment_id', '=', 'appointments.id')
->orderBy('options.datetime_start', 'ASC')
->with(['option'])
->get();

这将为您提供所有约会,包括那些没有Option 的约会 - 那些没有Option 并且因此没有datetime_start 的约会,将是全部在结果列表的开头或结尾返回,您需要检查一下。如果您只想使用 Option 进行约会,请将 leftJoin() 替换为 join()

关于mysql - 根据子模型/关系对父模型进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52403139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com