2016-05-19 4 views
0

Ich möchte einfache Drop-Down innerhalb HTML-Code aus 2 Tabelle, die sie haben einzelne Beziehung haben, in meinem Code kann ich Beziehungsdaten zu concat, dass mit anderen Tabellenspalten . zum Beispiel ist mein Code:Laravel erstellen einfaches Drop-Down von Beziehung und Concat-Spalten

$user_accounts = UserAccountNumber::with('currencyType')->select('*', DB::raw('CONCAT("CardNumber: ", card_number) AS account_info')) 
      ->whereUserId(Auth::user()->id) 
      ->pluck('account_info', 'id'); 

dieser Code funktionieren, aber ich möchte einige currencyType Tabellenspalten mit UserAccountNumber Tabelle conact und ich kann nicht TableName.ColumnName in DB::raw()

verwenden, zB:

$user_accounts = UserAccountNumber::with('currencyType') 
    ->select(
     '*', 
     DB::raw('CONCAT(" CardNumber: ", card_number, "CurrencyType: ", currencyType.title) AS account_info')) 
     ->whereUserId(Auth::user()->id) 
->pluck('account_info', 'id'); 

dann bekomme ich diesen Fehler:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'currencyType.currency_type' in 'field list' (SQL: select *, CONCAT("AccountNumber: ",account_number, " CardNumber: ", card_number, "CurrencyType: ", currencyType.currency_type) AS account_info from `user_account_numbers` where `user_id` = 17) 

currencyType Verfahren in Modell:

public function currencyType() 
{ 
    return $this->belongsTo(CurrencyType::class, 'currency_type', 'id'); 
} 
+1

Da Laravel Beziehung durch 2 Abfragen laden, nicht beitreten. Ich denke, Sie müssen 'JOIN' manuell oder concat Zeichenfolge in PHP –

+0

@ LêTrầnTiếnTrung Thanks –

Antwort

1

Laravel verwendet keine JOINs Beziehungen zu tun, so würden Sie eine spezifische Anfrage für das schreiben. Verwenden Sie den Abfrage-Generator dafür.

So etwas sollte funktionieren:

$user_accounts = DB::table('user_account_numbers') 
    ->join('currencyType', 'user_account_numbers.currency_id', '=', 'currencyType.id') 
    ->select('*', DB::raw('CONCAT(" CardNumber: ", card_number, "CurrencyType: ", currencyType.title) AS account_info')) 
    ->whereUserId(Auth::user()->id) 
    ->get(); 

Ich hoffe, Sie bekommen die Idee und es anpassen können Sie Ihre Datenbank-Schema entsprechen.

+0

das ist meine Standardlösung zu' Query Builder 'anstelle von Eloquent, Danke zu verwenden –