6

我有客户表和客户地址信息表。更新下面给出的 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();

但它不起作用,您能否解释一下更新模型及其相关模型的最佳实践。

4

2 回答 2

13

你可以更简单地做到这一点:

$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
于 2015-02-28T15:44:55.657 回答
1

我们也可以在@lukasgeiter 的答案中使用质量分配,如下所示:

$client = Client::findOrFail($id);
$client->fill($request->all());
$client->addressInfo->fill($request->all());
$client->push();
于 2017-06-14T11:08:34.117 回答