Итак, у меня есть следующие модели:
class Recursive extends Model {
public function __construct() {
parent::__construct();
}
// ...
}
class Place extends Recursive {
protected $table = 'places';
protected $fillable = ['name', 'parent_id'];
// ...
}
Следующий код используется для создания нового Place
:
$place = Place::create([
'name' = 'Second',
'parent_id' => 1
]);
Это приводит к следующей записи в база данных:
| Actual | Expected |
---------------------------------------------------------
| id | name | parent_id | id | name | parent_id |
| 1 | 'Top' | NULL | 1 | 'Top' | NULL |
| 2 | NULL | NULL | 2 | 'Second' | 1 |
Как видите, единственное установленное значение - это автоинкрементный столбец id
. 2 столбца, которые я пытаюсь создать, находятся в массиве fillable
, и модель создана, но она не связана правильно.
Кто-нибудь сталкивался с этой проблемой раньше? Я знаю, что могу использовать другой метод, например
$place = new Place();
$place->name = 'Second';
$place->parent_id = 1;
$place->save();
Но это не единственное место, где я использую этот код, и я бы предпочел не терять такую функциональность, как эта.
Редактировать: при включении журнала запросов для вызова create()
отображается следующее:
array (
'query' => 'insert into `places` () values ()',
'bindings' =>
array (
),
'time' => 1.26,
),
Дальнейшее редактирование: Включить MySQL Журнал имеет тот же вывод, что и выше. Следуя предложению Miken32 о возврате extends
в Model
, работает как ожидалось:
array (
'query' => 'insert into `places` (`name`, `parent_id`) values (?, ?)',
'bindings' =>
array (
0 => 'Second',
1 => '1'
),
'time' => 1.21,
),