我正在慢慢学习CodeIgniter的第4版,偶然发现了一种奇怪的行为:
使用模型的s='atg ttg tca aat tca tgg atc atg ttg tca aat tca tgg atc tag'
while [ "$s" ]; do
s=$(grep -Eo "atg.*tag" <<< "$s")
if [ "$s" ]; then
echo "$s"
s="${s#atg}"
fi
done
方法时,它仅保存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')
来保存文章。
您看到问题了吗?
答案 0 :(得分:0)
事实证明,在这种情况下,模型的save()
方法仅接受类CodeIgniter\Entitiy
的对象。
要做的是使Article
扩展该类:
namespace App\Entities;
class Article extends \CodeIgniter\Entitiy
{
}
这解决了问题。