2016-05-10 101 views
0

因此,我有兩個Laravel/Eloquent模型,並且我想向其中一個添加一個字段。將字段添加到Eloquent模型

模型'汽車'從表'汽車'獲取數據,並具有'ID','模型','顏色'和'價格'字段。模型'人'有字段'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

這不是它如何完成。

該人可以有一輛車(或許多)。讓我們假設,每個人都有一個汽車在你的數據庫,你的車表應該有一個可爲空person_id列,並添加到您的用戶模型

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

現在你可以得到人與他的車的信息是這樣的

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

我希望你明白了吧這裏

0

您需要首先定義One-To-Many關係。然後獲得該車的車型:

$carModel = Person::find($personId)->car->model; 
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表中。

0

那麼,我需要的是:

protected $appends = ['car']; 

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

這是所有關於系列化和 '保護$追加',謝謝大家:)

相關問題