Я медленно изучаю версию 4 CodeIgniter и наткнулся на странное поведение:
При использовании метода save()
в моей модели сохраняются только отметки времени created_at
и updated_at
.
Вот полезный код.
Миграция
public function up()
{
$this->forge->addField('id');
$this->forge->addField([
'title' => [
'type' => 'varchar',
'constraint' => 127
],
'content' => [
'type' => 'text'
],
'slug' => [
'type' => 'varchar',
'constraint' => 127
],
'created_at' => [
'type' => 'datetime'
],
'updated_at' => [
'type' => 'datetime'
],
'deleted_at' => [
'type' => 'datetime',
'null' => true
]
]);
$this->forge->createTable('articles');
}
ПРИМЕЧАНИЕ: работает нормально, таблица правильно создается в базе данных, так как высм. ниже.
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(9) | NO | PRI | NULL | auto_increment |
| title | varchar(127) | NO | | NULL | |
| content | text | NO | | NULL | |
| slug | varchar(127) | NO | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| deleted_at | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Сущность
namespace App\Entities;
class Article
{
}
Модель
namespace App\Models;
class ArticleModel extends \CodeIgniter\Model
{
protected $table = 'articles';
protected $returnType = 'App\Entities\Article';
protected $allowedFields = ['title', 'content', 'slug'];
protected $useTimestamps = true;
}
Вызов модели
Я пытался вызвать модель из двух разныхместа: сеялка и контроллер, используя код ниже.
$article = new \App\Entities\Article();
$article->title = 'Article Title';
$article->content = 'Article Content';
$model = new \App\Models\ArticleModel();
$model->save($article);
echo $model->getLastQuery();
Оба раза результат был одинаковым. echo
показывает следующее.
INSERT INTO `articles` (`created_at`, `updated_at`) VALUES ('2019-10-09 02:25:56', '2019-10-09 02:25:56')
Я не знаю, как сказать моей модели (я думаю, что она ответственна за плохое поведение), чтобы принять во внимание ее $allowedFields
, чтобы сохранить статью.
Вы видите проблему?