Как исправить Неопределенная функция: 7 ОШИБКА: оператор не существует: целое число = текст - PullRequest
0 голосов
/ 28 апреля 2020
$rows = DB::table($table)->select('content.id as product_id', 'content.title as product_title', 'custom_fields.name as price_name', 'custom_fields.name_key as price_key', 'custom_fields_values.value as price')
      ->leftJoin('custom_fields', 'content.id', '=', 'custom_fields.rel_id')
      ->leftJoin('custom_fields_values', 'custom_fields.id', '=', 'custom_fields_values.custom_field_id')
      ->where('content.content_type', '=', 'product')
      ->where('content.is_deleted', '=', 0)
      ->where('custom_fields.type', '=', 'price')
      ->get()
      ->toArray();

Ответы [ 2 ]

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

Есть ли причина, по которой вы храните custom_fields.rel_id как текст, а не как целое число? Если это строковый идентификатор, например A2BFZJ, зачем сравнивать его с content.id, который имеет тип integer. Кроме того, если вы использовали Модели, которые Laravel обеспечивает, это можно решить с помощью массива $casts в Модели.

Единственный другой способ ввести приведение в запросе Laravel - это просто использовать DB :: raw, Вы можете набрать приведение следующим образом:

->where(DB::raw('CAST(content.content_type AS TEXT)'), '=', 'product');
0 голосов
/ 28 апреля 2020

Вы можете написать свой запрос, который вы упомянули в комментарии, как это в Laravel

DB::table('book_content')
    ->leftJoin('book_custom_fields','book_content.id','=','book_custom_fields.rel_id')
    ->select('book_content.id as product_id','book_content.title as product_title', 'book_custom_fields.name as price_name', 'book_custom_fields.name_key as price_key')
    ->get()
    ->toArray();

Дайте мне знать, если это полезно или нет.

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