我正试图建立一个出租汽车的网站,但我仍然局限于搜索功能。
输入的是上车日期和下车日期,结果应该是该时段内可用的汽车列表。
这是我的桌子:
这些是我的关系:
对于Car
模型:
public function invoices()
{
return $this->belongsTo('App\Invoice');
}
public function placements()
{
return $this->belongsTo('App\Placement');
}
对于Placement
模型:
public function invoice()
{
return $this->belongsTo('App\Invoice');
}
public function car()
{
return $this->hasOne('App\Car');
}
对于Invoice
模型:
public function cars()
{
return $this->hasMany('App\Car');
}
public function placements()
{
return $this->hasMany('App\Placement');
}
我在此问题上看到了question,但我真的不知道如何应用该答案:
$date1 = Carbon::parse('20.02.2018')->startOfDay();
$date2 = Carbon::parse('23.02.2018')->endOfDay();
$available = Car::whereDoesntHave('rentals', function($q) use($date1, $date2) {
$q->whereBetween('starting_date', [$date1, $date2])
->orWhereBetween('ending_date', [$date1, $date2])
->orWhere(function($q) use($date1, $date2) {
$q->where('starting_date', '<', $date1)
->where('ending_date', '>', $date2);
});
})
->get();
如果我尝试运行以下命令:$available = Car::doesntHave('placements')->get();
,仅出于测试目的,则会出现此错误:
未找到列:1054“ where子句”中的未知列“ cars.placements_id”(SQL:从
cars
中选择*,不存在(从placements
中选择*,其中cars
。placements_id
=placements
。id
))
可以帮我吗?如果没有确切的答复,也许有解释?
答案 0 :(得分:0)
此信息基本上是说您的车位中没有SerializationFeature.FAIL_ON_EMPTY_BEANS
:
new ObjectMapper()
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
.writeValueAsString(new Object());
让我们看看汽车模型:
placements_id
这是说Cars属于Placements,这将导致Column not found: 1054 Unknown column 'cars.placements_id' in 'where clause' (SQL: select * from `cars` where not exists (select * from `placements` where `cars`.`placements_id` = `placements`.`id`))
关系。
反之亦然
public function placements(){
return $this->belongsTo('App\Placement');
}
这将导致cars.placements_id = placements.id
关系。
这一切都取决于您希望数据的结构如何。
编辑
要满足您的要求,您可以采用以下结构(显然,您将添加自己的列和数据,但是这里介绍了它的基本工作原理):
汽车:
public function placements(){
return $this->hasMany('App\Placement');
}
预订:
cars.id = placements.cars_id
展示位置
id | name
------------
1 | Fiesta
2 | Focus
您必须添加预订模型,同时还要更改其他模型中的某些关系,但是通过上面的解释,我确定您可以解决这个问题。