2016-06-26 5 views
0
class Product extends Model 
{ 
    use SoftDeletes; 
    protected $dates = ['deleted_at']; 
    public $timestamps = true; 
    protected $fillable = ['name']; 
    protected $connection = 'pos'; 

    public function __construct() 
    { 
     config(['database.connections.pos.database' => 'pos_1']); 
     parent::__construct(); 
    } 
} 

Product::create(['name' => 'Snack']); 

on my db id = 1, name = null, created_at = '2016-06-26 18:30:24', updated_at = '2016-06-26 18:30:24 ', deleted_at = nullLaravel Eloquent create null field

Почему name = null?


Обновление разместить

работает, когда я использую

$p = new Product(); 
$p->name = 'Snack'; 
$p->save(); 

но почему Product::create(['name' => 'Snack']); заполнения утратившим?


Обновление пост (решена)

ах я отсутствует массив частот в качестве параметра в этом конструкторе.

 public function __construct(array $attributes) 
     { 
      config(['database.connections.pos.database' => 'pos_1']); 
      parent::__construct($attributes); 
     } 

ответ

2

Возможно, причина в том, что вы снова не запускаете родительский конструктор.

Вместо:

public function __construct() 
{ 
    config(['database.connections.pos.database' => 'pos_1']); 
} 

вы должны использовать:

public function __construct() 
{ 
    config(['database.connections.pos.database' => 'pos_1']); 
    parent::__construct(); 
} 

Имейте в виде, что для красноречивых моделей у вас есть также connection свойства, так что вы, вероятно, можете установить также название соединения с базой данных.

+0

Добавил Sir, я редактирую свой пост, но все еще null. –

+0

У вас есть какой-либо метод мутаторов? Я имею в виду, что у вас установлен метод setNameAttribute для вашего класса? –

+0

no Сэр, мой класс, как и по ссылке выше –