php - Laravel 属于合并?

标签 php mysql laravel laravel-5 coalesce

我正在尝试添加与我的 Booking 模型的关系。我已经有一个如下所示的关系:

public function vehicle() {
    return $this->belongsTo(Vehicle::class);
}

适用于 bookings.vehicle_id 列。不过,现在我添加了另一列名为 bookings.billed_vehicle_id 的列,如果 vehicle_id 不为空,它将“覆盖”它。所以我想做这样的事情:

public function billedVehicle() {
    return $this->belongsTo(Vehicle::class,DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}

这可能吗?

如果 belongsTo 不可能,我可以以某种方式创建一个支持此功能的自定义关系吗?

最佳答案

belongsTo() 返回一个查询生成器,因此您可以继续将 ->whereRaw() 链接到其末尾:

public function billedVehicle() {
    return $this->belongsTo(Vehicle::class)
        ->whereRaw(DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}

关于php - Laravel 属于合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067159/

相关文章:

php - 无法使用 laravel 安装打开流

mysql - 为什么这个带有 DATE 的 SQL 查询不起作用?

mysql - 获取唯一字段的总和

java - 从 PHP 检测 android java 客户端连接超时

php - 如何使用动态键循环 PHP 对象

mysql - 非标准sql查询

php - 没有模型 [App\Products] Laravel 的查询结果

javascript - VideoJS 通过 RESTful API 进行动态源更改

php - 如何减少使用PHP和MySQL对海量数据执行某些操作所需的时间?

php - 使用 php 和 phpmyadmin 更改数据库中的日期