2014-03-03 107 views
1

我使用Laravel的Toddish/Verify庫,因爲它包含我需要的項目的99%。我需要的只是添加一些字段。Laravel模型繼承

我在遷移加入他們,我也想加入他們產生質量:

use Toddish\Verify\Models\User as VerifyUser; 

class User extends VerifyUser 
{ 
    public function __construct() { 
     array_merge ($this->fillable, array(
      'salutation', 'title', 'firstname', 'lastname', 'phonenumber', 'mobilenumber' 
     )); 
    } 
} 

然而,當我跑我創建測試:

public function testUserCreation() { 
    $user = User::create(
     [ 
      'username' => 'testusername', 
      'email' => '[email protected]', 
      'password' => 'testpassword', 
      'salutation' => 'MrTest', 
      'title' => 'MScTest', 
      'firstname' => 'Testfirstname', 
      'lastname' => 'Testlastname', 
      'phonenumber' => 'testPhoneNumber', 
      'mobilenumber' => 'testMobileNumber', 
     ] 
    ); 
    $this->assertEquals($user->salutation, 'MrTest'); 
    $this->assertEquals($user->title, 'MScTest'); 
    $this->assertEquals($user->firstname, 'Testfirstname'); 
    $this->assertEquals($user->lastname, 'Testlastname'); 
    $this->assertEquals($user->phonenumber, 'testPhoneNumber'); 
    $this->assertEquals($user->mobilenumber, 'testMobileNumber'); 
} 

我得到這樣的:

Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 19 users.username may not be NULL (SQL: insert into "users" ("updated_at", "created_at") values (2014-03-03 09:57:41, 2014-03-03 09:57:41)) 

在涉及用戶創建的所有測試中,就好像它在保存t時忘記了父項屬性他模型。

我在做什麼錯?

+0

我們可以看到用戶模型 –

+0

https://github.com/Toddish/Verify-L4/blob/master/src/Toddish/Verify/Models/User.php –

回答

3

問題是你重寫了我認爲是Eloquent構造函數,所以值永遠不會被傳遞。

__construct更改爲如下所示。

public function __construct(array $attributes = array()) 
{ 
    parent::__construct($attributes); 

    array_merge ($this->fillable, array(
     'salutation', 'title', 'firstname', 'lastname', 'phonenumber', 'mobilenumber' 
    )); 
} 

Model::create方法實際上將創建模型的新實例和陣列通入__construct。你壓倒這一點,並阻止它通過信息傳遞。

注意如果你決定重寫像你在這裏完成的核心方法,總是檢查繼承,並確保你沒有破壞任何東西。

+0

謝謝,錯過了,由於某種原因。我會盡我所能接受這個答案。 –

+0

沒問題,我最近做了一個類似的事情,完全放棄了我所有的模型,因爲他們擴展了我的自定義類aha。 – ollieread

+0

漂亮的漁獲,+1 :) –