Laravel将模型日期列与关系日期列进行比较



我正在尝试比较来自不同表的两个日期列。

这是我的模型:

<?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']);
}

最新更新