2014-03-03 100 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 :) –