Обновить таблицу и связанную с ней модель в laravel?

У меня есть таблица клиента и таблица информации client_address. Мне нужно обновить обе таблицы при обновлении классов модели client.my, приведенных ниже,

        class Client extends Model {
public function addressInfo() {
return $this->hasOne('App\Model\ClientAddressInfo');
}
}

class ClientAddressInfo extends Model {
protected $table = 'client_address_info';
public function client() {
return $this->belongsTo('App\Model\Client');
}
}

Мой контроллер для обновления приведен ниже.

$client = Client::findOrFail($id);
$client->name = rand(0, 1222222);
$address = ClientAddressInfo::where('client_id', '=', $id)->get();
$address->street = "new street";
$address->save();

Но это не работает. Не могли бы вы объяснить наилучшую практику для обновления модели и связанных с ней моделей.

3

Решение

Вы можете сделать это намного проще:

$client = Client::findOrFail($id);
$client->name = rand(0, 1222222);
$client->addressInfo->street = 'new street';
$client->addressInfo->save();
$client->save();

Вместо звонка save() на обеих моделях вы также можете использовать push() который сохранит модель и все связанные с ней модели:

$client = Client::findOrFail($id);
$client->name = rand(0, 1222222);
$client->addressInfo->street = 'new street';
$client->push(); // save client and addressInfo
9

Другие решения

Также мы можем использовать массовое задание, как в ответе @lukasgeiter:

$client = Client::findOrFail($id);
$client->fill($request->all());
$client->addressInfo->fill($request->all());
$client->push();
0

По вопросам рекламы [email protected]