Mysql
 sql >> база данни >  >> RDS >> Mysql

Laravel 5.2 - Ляво присъединяване към DB::Raw не работи?

leftJoin функцията се декларира по следния начин:

 public function leftJoin($table, $first, $operator = null, $second = null)

Искате да предадете необработените си функции като втора колона:

return $this->model->from('alerts as a')
                   ->leftJoin('locations AS l', 'l.id', '=', DB::Raw("JSON_UNQUOTE(JSON_EXTRACT(a.criteria, '$.locationId'))"))
                   ->leftJoin('industries as i', function($join){
                        $join->on(DB::raw("find_in_set(i.id, JSON_UNQUOTE(JSON_EXTRACT(a.criteria,  '$.industries')))",DB::raw(''),DB::raw(''))); 
                   })

                   ->where('user_id', '=', $userId)
                   ->selectRaw("a.id
                             , a.name
                             , a.criteria
                             , GROUP_CONCAT(DISTINCT(i.name) SEPARATOR ', ') as 'Industries'")
                   ->groupBy('a.id')
                   ->orderBy('a.created_at', 'desc');

Предложението find_in_set дойде от тук .

Не съм сигурен какво е '$.locationId' е, но ако е променлива, можете да го предадете като параметър в масив като втори параметър на DB::raw() функция.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql има ли еквивалента на аналитичните функции на Oracle?

  2. ВМЕСВАНЕ на стойности от една таблица в друга таблица

  3. MySQL стандарти/конвенции за имена на колони

  4. Как да покажа вторичните записи в дъщерния ред на таблицата с данни със съответния идентификатор?

  5. създаване на тригер в различни бази данни