我正在尝试比较来自不同表的两个日期列。
这是我的模型:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class ExitAccessionGood extends Model
{
protected $fillable = ['exit_accession_id', 'norm_id', 'quantity'];
public function entry_goods()
{
return $this->hasMany('AppEntryAccessionGood', 'norm_id', 'norm_id');
}
public function packagings()
{
return $this->hasMany('AppPackagingItem', 'norm_id', 'norm_id');
}
}
entry_goods()
函数从entry_accession_goods
表中收集与exit_accession_goods
表中具有相同norm_id
的所有"规范"。
public function entry_goods()
{
return $this->hasMany('AppEntryAccessionGood', 'norm_id', 'norm_id');
}
但它收集了所有这些,但是我只需要获取日期小于或等于模型表的那些。
例如,如果在exit_accession_goods
表中(昨天(中添加了规范 ID 1 和 2,并且今天在entry_accession_goods
表中添加了相同的 id(1 和 2(,则函数entry_goods()
不应从entry_accession_goods
表中获取数据。
这是我尝试过的:
public function entry_goods()
{
return $this->hasMany('AppEntryAccessionGood', 'norm_id', 'norm_id')
->whereRaw('entry_accession_goods.created_at <= exit_accession_goods.created_at');
}
我无法访问exit_accession_goods.created_at
这是问题所在,有人知道解决方案吗?谢谢。
你可以把它作为一个雄辩的查询...
$date = 2020/01/01'
$var = ExitAccessionGood::whereHas('entry_good', function ($query) use ($date) {
$query->where('created_at', '<', $date);
})->get();
这应该做你想做的事,假设我理解这个问题
这种正确的关系
public function entry_goods(){
return $this->hasMany('AppEntryAccessionGood', 'norm_id', 'norm_id')
->where(created_at <= $this->attributes['created_at']);
}