2015-12-22 2 views
2

Я создал модель в Laravel.Подключение модели с таблицей Laravel 5.2

class deals extends Model 
{ 
// 
protected $table = 'tbl_deal'; 
} 

Теперь я хочу использовать эту модель для извлечения данных в моем контроллере. Однако данные, извлеченные из этой модели, также должны быть ограничены столбцом в другой таблице. Ниже приведена основная схема

tbl_deal

  • deal_id
  • merchant_id
  • deal_text

tbl_merchant

  • merchant_id
  • merchant_url_text

Мой текущий контроллер имеет следующий код, чтобы извлечь все предложения модели сделок.

$deals = deals::all(); 

Я хочу ограничить сделки продавцом_url_text. Поскольку это находится в торговой таблице, мне нужно будет присоединиться к ней с существующей моделью сделки.

Любая помощь в том, как я могу это сделать в своем контроллере, и если это правильный способ решить эту проблему.

Спасибо.

ответ

2

Добавить в вашей deals модели

следующую функцию (так называемый relationship):

public function merchant() 
{ 
    return $this->belongsTo(Merchant::class, merchant_id); 
} 

и теперь вы сможете получить все сделки с продавцом, используя

$deals = deals::with('merchant')->get(); 

Например для отображения первого использования:

$deal = $deals->first(); 
echo $deal->merchant->merchant_url_text; 

Однако для этого вам необходимо также создать модель Merchant и используя этот метод не будет join.

В случае, если вы хотите использовать простое соединение вместо отношений в этом случае, вы можете использовать:

$deals = deals::selectRaw('tbl_deal.*, tbl_merchant.merchant_url_text') 
       ->leftJoin('tbl_merchant','tbl_deal.merchant_id','=','table_merchant.merchant_id')->get(); 

И теперь для отображения 1-го торгового текста вы можете использовать:

$deal = $deals->first(); 
echo $deal->merchant_url_text; 

Я сильно рекомендуем прочитать документацию Laravel, чтобы полностью понять основные концепции Laravel перед написанием любого кода (например, по условному названию модели должно быть Deal вместо deals, а имя таблицы должно быть deals вместо tbl_deal, аналогичный для первичного ключа - он должен быть простым id вместо deal_id).

+0

Спасибо Marcin. Подробное описание документации. –

+0

Просто быстрый запрос. Если мне нужно ограничить ответ сделок на основе определенной переменной, которую я имею в моем контроллере (в данном случае merchant_url_text), как мне это сделать? –

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