【发布时间】:2021-05-20 07:40:25
【问题描述】:
我正在开发一个使用 Laravel 7.0 的预订系统
所以在这个系统中,我创建了一个名为“bookings”的表
我创建了它的模型,名为 Booking.php
在这个 Booking.php 中,我放入了关联函数以将其模型加入到事务表中,如下所示
public function transaction()
{
return $this->belongsTo('App\Models\Transaction', 'id', 'booking_id');
}
突然有一个新要求进来了,这个预订将有它的孩子
为了区分预订父母和它的孩子,我在预订表中添加了一个名为
的新列'parent_booking_id'
我不想过多更改代码功能,所以我正在考虑制定条件以确保预订点与正确交易的关系
我正在考虑编写这样的代码
public function transaction()
{
return $this->belongsTo('App\Models\Transaction', 'parent_booking_id' ?? 'id', 'booking_id');
}
但它没有按预期工作
逻辑是
如果 parent_booking_id 存在,则将表 transaction 中的 'booking_id' 列连接到表 bookings 中的 'parent_booking_id' 列
其他
它将表事务中的“booking_id”列连接到表预订中的“id”列
【问题讨论】:
-
是的,很明显它不起作用,因为
'parent_booking_id'是一个字符串,因此始终是参数。您可以尝试$this->parent_booking_id ? 'x' : 'y',但为了清晰起见,创建 2 个关系可能会更好 -
已经尝试过$this->parent_booking_id,但它总是返回null,所以不能用作条件,如何在不更改已经使用事务函数的当前代码的情况下创建2个关系
标签: php laravel eloquent laravel-7