错误“使用空值创建默认对象” Laravel使用一对一数据库更新

时间:2018-07-09 02:48:33

标签: laravel laravel-5.2

我有一对一的数据库。是Telepon在另一个桌子上。因此,每个“ siswa”都有一个“ telepon”(电话号码)。 Telepon的“有时”类型不是“必需”。可以为空白。 但是,如果将其设置为空白,则在更新时会出现错误“从空值创建默认对象”。

Telepon模型中的代码:

    class Telepon extends Model
{
    protected $table      = 'telepon';
    protected $primaryKey = 'id_siswa';
    protected $fillable   = [
        'id_siswa',
        'nomor_telepon',
    ];

    public function siswa() {
        return $this->belongsTo('App\Siswa', 'id_siswa');
    }

Siswa模型中用于Telepon的代码:

public function telepon() {
    return $this->hasOne('App\Telepon', 'id_siswa');
}

在Controller中进行更新:

public function update(Siswa $siswa, SiswaRequest $request){
        $input = $request->all();

        $siswa->update($input);

        $telepon = $siswa->telepon;
        $telepon->nomor_telepon = $request->input('nomor_telepon');
        $siswa->telepon()->save($telepon);

        $siswa->hobi()->sync($request->input('hobi_siswa'));

        return redirect('siswa');
    }

1 个答案:

答案 0 :(得分:1)

使用null合并运算符??检查是否为null或创建新的模型实例:

$telepon = $siswa->telepon ?? new Telepon();