簡體   English   中英

Laravel從Relationship和Concat列創建簡單的下拉列表

[英]Laravel create simple drop-down from relationship and concat columns

我想從2個具有單一關系的表的HTML代碼中創建簡單的下拉列表,在我的代碼中,我無法獲取關系數據以與其他表列連接。 例如,這是我的代碼:

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

這段代碼可以正常工作,但是我想用UserAccountNumber表來配置一些currencyType表列,並且我不能使用tableName.columnName進入DB::raw()

例如:

$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');

然后我得到這個錯誤:

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)

Model中的currencyType方法:

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

Laravel不使用JOIN進行關系,因此您必須為此編寫一個特定的查詢。 為此使用查詢生成器。

這樣的事情應該起作用:

$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();

希望您能想到這個想法,並可以使其適應您的數據庫架構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM