Laravel сравнение столбца даты модели со столбцом даты отношения - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь сравнить два столбца даты из разных таблиц.

Вот моя модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ExitAccessionGood extends Model
{
    protected $fillable = ['exit_accession_id', 'norm_id', 'quantity'];

public function entry_goods()
{
    return $this->hasMany('App\EntryAccessionGood', 'norm_id', 'norm_id');
}

public function packagings()
{
    return $this->hasMany('App\PackagingItem', 'norm_id', 'norm_id');
}
}

Функция entry_goods() собирает все "нормы" из таблицы entry_accession_goods, которые имеют тот же norm_id, что и в exit_accession_goods таблица.

public function entry_goods()
{
    return $this->hasMany('App\EntryAccessionGood', 'norm_id', 'norm_id');
}

Но он собирает их все, однако мне нужны только те, чья дата меньше или равна таблице модели.

Например, если в таблицу exit_accession_goods (вчера) добавлены идентификаторы 1 и 2 норм, а в таблицу entry_accession_goods (сегодня) добавлены те же идентификаторы (1 и 2), функция entry_goods() НЕ ДОЛЖНА получать данные из таблицы entry_accession_goods.

Это то, что я пробовал:

public function entry_goods()
{
    return $this->hasMany('App\EntryAccessionGood', 'norm_id', 'norm_id')
    ->whereRaw('entry_accession_goods.created_at <= exit_accession_goods.created_at');
}

Я не могу получить доступ exit_accession_goods.created_at в чем проблема, кто-нибудь знает решение? Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Это правильное соотношение

public function entry_goods(){
    return $this->hasMany('App\EntryAccessionGood', 'norm_id', 'norm_id')
    ->where(created_at <= $this->attributes['created_at']);
}
0 голосов
/ 28 января 2020

Вы можете поставить его как красноречивый запрос ...

$date = 2020/01/01'
$var = ExitAccessionGood::whereHas('entry_good', function ($query) use ($date) {
        $query->where('created_at', '<', $date);
    })->get();

Это должно делать то, что вы хотите, предполагая, что я понял вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...