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

Как да използвате вътрешни съединения с подзаявки в Laravel Eloquent

това проработи (игнорирайте динамичните неща като това->getClassName и т.н.). основната логика работи добре

public function scopeAddTranslations($query)
{
    $t = new Translation();

    $subq = $t->select('item','text as ref_ar')
              ->where('locale','=','ar')
              ->where('item','like',$this->getClassName().'.ref%');

    $query->leftjoin(\DB::raw('('.$subq->toSql().') as t'), 
      function ($join) use ($subq) { 
          $join->on(\DB::raw('SUBSTRING('.$this->getTable().'.ref_translation 
                              FROM 14 FOR 26)'),
                                 '=',
                                 \DB::raw('t.item'))
                   ->addBinding($subq->getBindings());
            });
    return $query;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обединете заявката само с колони, които имат всички стойности в клаузата „in“.

  2. PostgreSQL - извличане на елементи в реда, в който са били съхранени

  3. ValueError:Не може да се прехвърли DatetimeIndex към dtype datetime64[us]

  4. Изключително бавна заявка на PostgreSQL с клаузи ORDER и LIMIT

  5. Вземете N-тия елемент от масив, който се връща от функцията string_to_array().