SQLSTATE [42S22]: столбец не найден в Laravel - PullRequest
1 голос
/ 13 апреля 2020

Здравствуйте. Мой запрос следующий, но я получаю ошибку при его выполнении:

$out_let_product = OutLet::where('id', Redis::get('out_let_id') )->with(
    ['products' => function($query){
        $query->with(['prices', 'combinations' => function($query){
            $query->where('prices.active', '=', '1');                
        }]);
    }])->get();

В приведенном выше коде «цены» и «комбинации» = функция в модели продукта. и это работает отлично, но проблема в том, что я включаю "$ query-> where ('Prices.active', '=', '1');" в этой строке внутри системы возникла ошибка, как показано ниже:

"message": "SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'values.active' в 'предложении where' (SQL: выберите * из product_combinations, где product_combinations. product_id in (1, 2, 3) и prices. active = 1 и product_combinations. deleted_at равно нулю) ",

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Ооо, да, я получил свои решения:

$out_let_product = OutLet::where('id', Redis::get('out_let_id') )->with(
    ['products' => function($query){
        $query->with(['prices' => function($query){
            $query->where('product_prices.active', '=', '1'); //product_prices is DB: Table name

        }]);
        $query->with(['combinations' => function($query){
            query->where('product_combinations.id', '1');  //product_combinations is DB: Table name
        }]);
    }])->get();
0 голосов
/ 14 апреля 2020

Я предполагаю, combinations и prices относятся к разным таблицам, и вы используете price.active в combinations. Попробуйте использовать это,

$out_let_product = OutLet::where('id', Redis::get('out_let_id') )->with(
    ['products' => function($query){
        $query->with(['combinations' => function($query){
            $query->select('combinations.*', 'prices.*')
                  ->join('prices', function($join) {
                      $join->on('prices.id' '=', 'combination.id') // or your join logic
                           ->where('prices.active', '=', 1)                    
                  })->where(// where clause for combination);
    }])->get();
...