簡體   English   中英

向雄辯模型添加字段

[英]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;

看看雄辯的關系 您想要做的是在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表中。

好吧,我需要的是:

protected $appends = ['car'];

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

都是關於序列化和“受保護的$ appends”的,謝謝大家:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM