2015-07-05 1 views
2

Доброго дня, (извините за путаницу названия, его просто трудно выразить :))как объединить несколько строк в одной таблице в 1 ряд с другим столбцом в SQL JOIN с застройщиком Laravel запроса

У меня есть таблица сделок со следующим полем:

Transactions TABLE 
ID | amount | branch_id | supplier_id 
1 | 1,200 | 2  | 1 

Subsidiary TABLE 
ID | Name  | Type 
1 | supplier1 | 0 
2 | branch_2 | 1 

теперь я хочу, чтобы отобразить это на мой взгляд, со значением идентификатора правильно поэтому я присоединился к следующей таблице (им с помощью построителя запросов Laravel)

$transactions = DB::table('transactions_table') 
->leftJoin('subsidiary_table','transactions_table.supplier_id','=','subsidiary_table.id') 
->get(array('transactions_table.id', 
'transactions_table.amount', 
'subsidiary_table.name as branch', 
'subsidiary_table.name as supplier')); 

Im путать о том, как я могу получить этот результат

Display View 
ID | Ammount | Supplier | Branch 
1 | 1,200 | Supplier1 | branch_2 

спасибо за разъяснение ..

+0

какой-нибудь помочь кому-нибудь? :) – melvnberd

+0

Вы хотите получить результат в виде sql ....? Вы создали миграцию для просмотра ...? – hhsadiq

+0

Привет, @hhsadiq уже создали мое мнение .. Извините за неопределенный вопрос, но я просто хочу получить результаты в массиве/объекте, чтобы я мог визуализировать его, используя мой цикл. – melvnberd

ответ

0

Создание мигрантов View

Существует нет прямого способа создания представлений sql с использованием методов Llovele/QueryBuilder. Вам нужно создать миграцию, где вы запустите обычную командуMySql.

Как обсуждалось на Laravel.io thread

Поскольку не существует методов, которые используют драйверы базы данных для создания взглядов, вы можете просто создать его, используя синтаксис SQL.

MySQL Пример:

DB :: Заявление ('CREATE VIEW example_view_name AS SELECT поле1, поле2 из таблицы, где поле1> поле2');

Вы должны запустить этот код в миграции в up()

public function up() 
{ 
    //db statement for creating view 
} 

SQL Query

Ваш SQL проблема генерации запроса отвечает на dba.stackexchange

SELECT t.ID, t.amount, s.Name as Supplier, sb.Name as Branch FROM 
    Transactions as t JOIN Subsidiary as s ON (s.ID=t.supplier_id) JOIN 
    Subsidiary as sb ON (sb.ID=t.branch_id) WHERE t.ID = 1; Try it. 

PD: Вы можете изменить синтаксис JOIN для LEFT JOIN, если вы хотите, чтобы возвращал запись t.ID = 1 из транзакций, даже если один столбец не соответствует в дочерних JOIN.

модель для SQL View

Теперь вы должны создать модель, как если бы вы создать для любой таблицы БД.Затем возьмите привилегию Eloqeunt

Display::all()

И у вас есть коллекция выразительных объектов.

 Смежные вопросы

  • Нет связанных вопросов^_^