Laravel PHP: как объединить каждый элемент коллекции после обновления? - PullRequest
1 голос
/ 09 января 2020

У меня есть коллекция клиентов в Laravel. $clients = Client::all();

Мне нужно обновить имя пользователя для каждого элемента в коллекции. Это мой код:

$clients = Client::all();

$clients->each(function ($item, $key) {

    if ($item->user()->first()) 
    {
        $user = $item->user()->first();
        $name = $user->name;
    } else $name = '';

    $client = collect($item);
    $client = $client->union(['user' => $name]);
});

Вопрос в том, как правильно сформировать $clients Collection с обновленным $ client.

Так что мне нужно return $clients с включенным именем пользователя.

Модели:

 // Client Model

public function user()
{
    return $this->belongsTo('App\User');
}

// User Model
public function clients()
{
    return $this->hasMany('App\Client');
}

Миграция:

Schema::create('clients', function (Blueprint $table) {
$table->bigIncrements('id');
$table->char('name', 200)->nullable();
$table->char('city', 100)->nullable();
$table->char('type', 20)->nullable();
$table->foreign('user_id')->references('id')->on('users');
$table->unsignedBigInteger('user_id')->nullable();
$table->timestamps();
$table->softDeletes();

1 Ответ

0 голосов
/ 09 января 2020

Вы можете сделать что-то вроде ниже:

$clients = Client::all();

$clients->each(function ($item, $key) {

    $name = $item->user ? $item->user->name : "";
    return $name; // will append name in this client collection

});

return $clients

Чтобы узнать больше о каждом посещении метода

Надеюсь, это поможет.

Спасибо

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