gpt4 book ai didi

eloquent - 在 Eloquent 中自动生成和自动更新时间戳

转载 作者:行者123 更新时间:2023-12-05 01:46:59 31 4
gpt4 key购买 nike

我是 Laravel 的新手,我正在处理我的数据库迁移。对于一个表,我在表定义中包含了 $table->timestamps() 快捷方式。令我沮丧的是,我发现在我为表设置种子后,created_atupdated_at 0000-00-00 00:00:00.

我正在考虑将列定义更改为具有 DEFAULT CURRENT_TIMESTAMPDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,但后来我想知道为什么 Eloquent 还没有这样做。我想这一定是出于一个很好的理由 (tm)。我想这是为了与支持的不同数据库兼容?

如果我继续更改列定义,我是否将自己锁定在 MySQL 解决方案中?我真的不想记住在每个CREATEINSERT 上更新时间戳...有没有办法得到这个使用 Eloquent 成语完成了吗?

相关代码:

// migration method
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('category');
$table->integer('sort_order')->unsigned();
$table->index('sort_order');
});
}

// seeder method
public function run()
{
$data = [
'Category 1'
, 'Category 2'
];

$sort = 0;

foreach ( $data as $category ) {
DB::table('categories')->insert([
'category' => $category,
'sort_order' => $sort++,
]);
}
}

// database query
mysql> select * FROM categories;
+----+---------------------+---------------------+----------------+------------+
| id | created_at | updated_at | category | sort_order |
+----+---------------------+---------------------+----------------+------------+
| 1 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | Category 1 | 0 |
| 2 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | Category 2 | 1 |
+----+---------------------+---------------------+----------------+------------+

最佳答案

您需要使用 Eloquent Entity 来创建您的对象。

请记住,Eloquent 将根据类名搜索数据库名。该类必须是单一形式,但 Eloquent 会搜索它的复数形式。

如果您的数据库的调用方式与您必须添加属性的类不同 $table

<?php 

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
protected $table = 'categories'; // not neccessary in this case

}

创建新行

$category = new CategoryEntity();
$category->category = 'your category';
$category->sort_order = 'your sort order';
$category->save();

更新您的实体

$category = CategoryEntity::find($your_category_id);
$category->category = 'your category';
$category->sort_order = 'your sort order';
$category->update();

当您像这样使用时,列 created_at 和 updated_at 将自动更新。

关于eloquent - 在 Eloquent 中自动生成和自动更新时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32731029/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com