Как выбрать по родству из другой модели - PullRequest
0 голосов
/ 06 января 2019

У меня есть буксирные столы:

*** продукты: id, заголовок, цена, созданы_, обновлены

Это запасы продуктов.

*** product_details: id, product_id, продать, создан_, обновлен_at

Это количество продаж на каждый день. Пример

продукты:

----- 1-продукт 1-2,9 - созданный_ат, обновленный_ат

----- 2-продукт 2- 3,94 - созданный_ат, обновленный_ат

----- 3-продукт 3-1,94 - создан_ат, обновлен_ат

product_details:

----- 1-2- 3 - созданный_, обновленный_ат

----- 2-1- 6 - созданный_ат, обновленный_ат

----- 3-3- 8 - созданы_, обновлены_10

----- 4-2- 6 - созданы_, обновлены_10

----- 5-1- 7 - созданный_ат, обновленный_ат

----- 6-3- 11 - создан_, обновлен

У меня есть две модели:

Продукт:

class Product extends Model
{    
    public function product_details()
    {
        return $this->hasMany('App\Product_detail');
    }
}

Product_detail

class Product_detail extends Model
{
    //
    public function product()
    {
        return $this->belongsTo('App\Product');
    }
}

Контроллер

class Test extends Controller
{
    //*
    public function index()
    {
        $products = new Product;

        $today = Carbon::now()->toDateTimeString();;
        $yesterday = Carbon::now()->subDays(100)->toDateTimeString();
        $products = $products->product_details()->whereBetween('sell', array(1, 90000))->whereBetween('created_at', array($yesterday, $today))->get();
        dd($products);
        }
}

Я хочу выбрать товары с продажей последнего дня от 5 до 8.

Далее я хочу выбрать продукты с продажей за последний день между 5, 8 и созданным_ между двумя датами - вся эта информация из Product_detail.

Я пытался протестировать его с другим кодом, но мне это не удалось.

1 Ответ

0 голосов
/ 06 января 2019

Вы можете попытаться сделать простой запрос, используя вспомогательную функцию Eloquent:

Product::whereBetween('date', [$dateOne, $dateTwo])->get();

Вы также можете попробовать это, если вам нравится больше:

Product::where('date_one','<=',$dateOne)
       ->where('date_two','>=',$dateTwo)
       ->get();

->get(); вернет все результаты, ->first() вернет первый результат, если вам это нужно.

Конечно, вам нужно поместить правильную переменную в этот запрос, так как вы не указали нам имена таблиц.

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