Laravel/Lumen 迁移:如何创建永久大写列?
Laravel/Lumen migrations: How to create a permanent uppercase column?
我的 Laravel 迁移如下所示:
class CreateTableLanguage extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('language', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->char('iso639_1',2)->unique()->comment('http://www.loc.gov/standards/iso639-2/php/code_list.php');
$table->char('locale',2)->uppercase(); // DUMMY uppercase(), does not work
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('language');
}
}
在 SQL 中,我可以使用以下语句强制列的内容为大写:
UPDATE
MyTable
SET
MyColumn = UPPER(MyColumn)
如何将大写应用于我的 Laravel 迁移 class?
在 Laravel 中,您也可以使用 Mutator
强制内容为大写
public function setLocaleAttribute($value)
{
$this->attributes['locale'] = strtoupper($value);
}
这样,当您尝试使用 Laravel 修改该字段时,您将以大写形式存储该值
$language->locale = 'es'; // this will be 'ES'
$language->save();
为了补充该行为,如果您想确保始终以大写形式获取值,以防其他人手动或使用自定义代码添加记录,您可以创建一个访问器
public function getLocaleAttribute($value)
{
return strtoupper($value);
}
我的 Laravel 迁移如下所示:
class CreateTableLanguage extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('language', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->char('iso639_1',2)->unique()->comment('http://www.loc.gov/standards/iso639-2/php/code_list.php');
$table->char('locale',2)->uppercase(); // DUMMY uppercase(), does not work
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('language');
}
}
在 SQL 中,我可以使用以下语句强制列的内容为大写:
UPDATE
MyTable
SET
MyColumn = UPPER(MyColumn)
如何将大写应用于我的 Laravel 迁移 class?
在 Laravel 中,您也可以使用 Mutator
强制内容为大写public function setLocaleAttribute($value)
{
$this->attributes['locale'] = strtoupper($value);
}
这样,当您尝试使用 Laravel 修改该字段时,您将以大写形式存储该值
$language->locale = 'es'; // this will be 'ES'
$language->save();
为了补充该行为,如果您想确保始终以大写形式获取值,以防其他人手动或使用自定义代码添加记录,您可以创建一个访问器
public function getLocaleAttribute($value)
{
return strtoupper($value);
}