所以我有两个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));
}
但这不成功(错误,如'语法错误,意外'(',期待')'')。可能是什么解决方案?谢谢!
答案 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。您要做的是在Car
和Person
模型之间建立关系。如果一个人可以拥有一辆或多辆汽车,由您决定。我建议你让一个人有多辆车。
所以,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',谢谢大家:)