我有一个模型叫 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');
}
}
任何帮助都将不胜感激。
2条答案
按热度按时间pdkcd3nj1#
要按相关选项模型中的列对约会模型进行排序,您需要向查询中添加联接,以便可以按相关字段进行排序:
这将为您提供所有约会,包括那些没有选项的约会-那些没有选项的约会,因此,没有datetime\u start,都将在结果列表的开头或结尾返回,您需要进行检查。如果您只想预约选项,请将leftjoin()替换为join()。
kmbjn2e32#
$appointments = Appointment::with(['option' => function ($query){ $query->orderBy('datetime_start', 'desc'); } ])->get();