Laravel 4 - 软删除和外键引用

时间:2014-11-27 03:24:53

标签: laravel-4

最佳方法是什么,例如:

我有一个有很多人关系的城市。

如果由于任何原因我需要删除一个城市(使用软删除),那么有些人可能会丢失city_id参考。这使得Laravel显示错误消息"试图获取非对象的属性"。

我需要失去城市参考的人可以毫无错误地显示。

当我写一些像

这样的东西
echo isset($person->city) ? $person->city->name : '';

它有效,但对我来说看起来有点难看。

当我写的时候

echo $person->city->name;

我得到了一个"试图获得非对象的属性"消息,因为该城市已被删除。

Laravel如何处理这个问题?

2 个答案:

答案 0 :(得分:1)

要获取所有模型和软删除模型,请将以下内容添加到Person模型中城市的关系方法中;

public function cities(){
    return $this->belongsTo('Cities\Model\Path')->withTrashed();
}

答案 1 :(得分:0)

这是很好的@MattBurrow。正是我需要的。在我的情况下,我只是将hasMany更改为belongsTo。

模型/ Person.php

class Person extends \Eloquent {

    public function city(){
        return $this->belongsTo('City')->withTrashed();
    }
}