[英]Add field to an Eloquent model
所以我有兩個Laravel / Eloquent模型,我想在其中一個模型中再增加一個字段。
模型“汽車”從表“汽車”中獲取數據,並具有字段“ id”,“模型”,“顏色”和“價格”。 模型“ 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));
}
但這是不成功的(諸如“語法錯誤,意外的'(',期望的')'之類的錯誤)。 有什么解決方案? 謝謝!
那不是怎么做的。
這個人可以有一輛(或多輛)汽車。 假設每個人在您的數據庫中都有一輛汽車,您的汽車表應具有可空的person_id
列,並將其添加到您的User模型中
public function car() {
return $this->hasOne('App\Role');
}
現在您可以得到這樣的人和他的汽車信息
User::where('id',$id)->with('car')->get();
我希望你明白了
您需要首先定義一對多關系。 然后獲得該人的汽車模型:
$carModel = Person::find($personId)->car->model;
看看雄辯的關系 。 您想要做的是在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
表中。
好吧,我需要的是:
protected $appends = ['car'];
public function getTypeAttribute($car)
{
return Car::find($this->car_id)->model;
}
都是關於序列化和“受保護的$ appends”的,謝謝大家:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.