将字段添加到Eloquent模型

时间:2016-05-10 11:46:52

标签: php laravel model eloquent

所以我有两个Laravel / Eloquent模型,我想在其中一个中添加一个字段。

模型'Car'从表'cars'获取数据,并具有字段'id','model','color'和'price'。模型'Person'有字段'id','name'和'car_id',它是来自'cars'表的外键。我希望模型'Person'有一个名为'car'的字段,它将包含来自'Car'模型的汽车模型,具体取决于现有的car_id。我尝试过类似的东西:

use App\Models\Car;

    class Person extends Model {

        protected $car = array(Car::find($this->car_id));
    }

但这不成功(错误,如'语法错误,意外'(',期待')'')。可能是什么解决方案?谢谢!

4 个答案:

答案 0 :(得分:0)

这不是它的完成方式。

这个人可以有一辆车(或许多人)。假设每个人在您的数据库中都有一辆汽车,您的汽车表应该有一个可以为person_id列,并将其添加到您的用户模型

public function car() {
        return $this->hasOne('App\Role');
}

现在你可以让这个人和他的汽车信息像这样

User::where('id',$id)->with('car')->get();

我希望你明白这一点

答案 1 :(得分:0)

您需要先定义One-To-Many关系。然后为这个人获得汽车模型:

$carModel = Person::find($personId)->car->model;

答案 2 :(得分:0)

看看Eloquent Relationships。您要做的是在CarPerson模型之间建立关系。如果一个人可以拥有一辆或多辆汽车,由您决定。我建议你让一个人有多辆车。

所以,Person模型应该知道它有多辆车:

class Person extends Model
{
    public function cars()
    {
        return $this->hasMany(App\Car::class);
    }
}

汽车属于某人,因此模型应该知道:

class Car extends Model
{
    public function person()
    {
        return $this->belongsTo(App\Person::class);
    }
}

当然,在创建表格时,您应该将字段person_id添加到CARS表格。

答案 3 :(得分:0)

嗯,我需要的是:

protected $appends = ['car'];

    public function getTypeAttribute($car)
    {
        return Car::find($this->car_id)->model;
    }

关于序列化和'protected $ appends',谢谢大家:)