Вставить неопределенную переменную в Laravel Eloquent запрос get () - PullRequest
1 голос
/ 15 марта 2020

У меня было две модели в Laravel, и я использовал Laravel для API.

Wallet = [name, wallet_category_id, user_id]
Wallet_Category = [id, name]

Я вызываю весь кошелек, используя get () в контроллере, как я могу добавить имя категории кошелька в свой вывод ?

Wallet::where('user_id', $request->get('user_id'))->get()

вывод будет выглядеть так:

[
    {
        "id": 12,
        "user_id": 2,
        "name": "wallet1",
        "wallet_category_id" : 1,
        "created_at": "2020-03-09 22:40:29",
        "updated_at": "2020-03-09 22:40:29"
    },
    {
        "id": 13,
        "user_id": 2,
        "name": "wallet2",
        "wallet_category_id" : 2,
        "created_at": "2020-03-10 13:57:37",
        "updated_at": "2020-03-10 13:57:37"
    }
]

Я хочу вывод, подобный этому:

[
    {
        "id": 12,
        "user_id": 2,
        "name": "wallet1",
        "wallet_category_id" : 1,
        "created_at": "2020-03-09 22:40:29",
        "updated_at": "2020-03-09 22:40:29",
        "category" : "cat_1"
    },
    {
        "id": 13,
        "user_id": 2,
        "name": "wallet2",
        "wallet_category_id" : 2,
        "created_at": "2020-03-10 13:57:37",
        "updated_at": "2020-03-10 13:57:37",
        "category" : "cat_2"
    }
]

возможно ли это?

спасибо раньше.

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Отношения

Установить отношения в Wallet модель

class Wallet extends Model
{

    public function walletcategory()
    {
        return $this->belongsTo('App\Wallet_Category','wallet_category_id','id');
    }
}

Сейчас в контроллере

$wallets = Wallet::with('walletcategory')->where('user_id', $request->get('user_id'))->get();


foreach($wallets as $wallet){
    $wallet->walletcategory->name
}

Регистрация

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

Wallet::select('wallet.*','wallet_category.name')->leftjoin('wallet_category','wallet_category.id','wallet.wallet_category_id')->where('wallet.user_id', $request->get('user_id'))->get();
0 голосов
/ 15 марта 2020

Одним из способов является использование Eagar Загрузка Категория кошелька информация об отношениях при получении Кошелек

Создание отношения внутри Модель кошелька

//Wallet.php

...

use App\Wallet_Category;

...

public function walletCategory(){
    return $this->belongsTo(Wallet_Category, 'wallet_category_id', 'id')
}

Теперь получите необходимые столбцы, такие как id, имя из отношения

$wallets = Wallet::with('walletCategory:id,name')->where('user_id', $request->get('user_id'))->get();

Вы сможете получить имя walletCategory, например:

foreach($wallets as $wallet){
    //retrieve wallet category name like 
    $wallet->walletCategory->name
}
...