Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 31.05.2018 17:00:48

Не могу создать запрос к базе данных

Есть две таблцы
goods - товары
purchases - заказы
В goods есть поле test_product которое может быть либо 0 либо 1 - это означает товар на тестовый или нет.
purchases тут собственно все заказы скидываются, и таблица purchases связана с goods через внешний ключ good_id.
Также в поле purchases есть поле tracker_number сюда пишу номер трекинга после того как товар прошел проверку на складе, по умолчанию поле NULL.
Мне нужно отправлять на склад товар для получения номер tracker_number. Для этого нужно сделать выборку из двух таблиц:
purchases где все tracker_number = NULL и каждый товар НЕ тестовый, те в таблице goods поле test_product должно быть = 0.
Я делаю так:

$purcases = DB::table('purchases')
            ->whereNull('tracker_number')
            ->whereDate('created_at','=', Carbon::today()->toDateString())
            ->join('goods', function ($join) {
                $join->on('purchases.good_id', '=', 'goods.id');
                ->where('goods.test_product','=','0');
            })
            ->get();


но он говорит что ошибка. Помогите составить нормально запрос пожалуйста.
Спасибо что потратили свое время!

Не в сети

#2 31.05.2018 18:19:13

Re: Не могу создать запрос к базе данных

какая ошибка?
Вижу только синтаксическую

Было

$purcases = DB::table('purchases')
            ->whereNull('tracker_number')
            ->whereDate('created_at','=', Carbon::today()->toDateString())
            ->join('goods', function ($join) {
                $join->on('purchases.good_id', '=', 'goods.id');
                ->where('goods.test_product','=','0');
            })
            ->get();

Надо

$purcases = DB::table('purchases')
            ->whereNull('tracker_number')
            ->whereDate('created_at','=', Carbon::today()->toDateString())
            ->join('goods', function ($join) {
                $join->on('purchases.good_id', '=', 'goods.id')->where('goods.test_product','=','0');
            })
            ->get();

Для наглядности перенес одну строку

Изменено covobo (31.05.2018 18:21:02)

Не в сети

#3 01.06.2018 07:05:19

Re: Не могу создать запрос к базе данных

Здравствуйте! спасибо за то что помогаете.
Но к сожалению данный код выдает ошибку

[Illuminate\Database\QueryException]                                         
  SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' i 
  n where clause is ambiguous (SQL: select * from `purchases` inner join `goo 
  ds` on `purchases`.`good_id` = `goods`.`id` and `goods`.`test_product` = 0   
  where `tracker_number` is null and date(`created_at`) = 2018-06-01)         
                                                                               

                                                                               
  [PDOException]                                                               
  SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' i 
  n where clause is ambiguous

Не в сети

#4 01.06.2018 11:42:31

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Не могу создать запрос к базе данных

Нужно вот сюда

PHP
->whereDate('created_at','='Carbon::today()->toDateString())

Перед created_at добавить название таблицы этого поля. К примеру
%%(php)
—>whereDate(’purchases.created_at’,’=’, Carbon::today()->toDateString())
%% у меня так с one2m к m2m связях было

Изменено TrueKanonir (01.06.2018 11:44:13)

Не в сети

Подвал раздела