Laravel Schema有一个用于ENUM的命令,等同于该表。什么集合等同于表格?
发布于 2014-10-15 21:22:37
罗曼·纳扎尔金的方法几乎可以完美地工作,但是有一个关于表前缀的小问题(这个方法没有考虑到这个问题),但是让这个建议适用于表前缀是很简单的:
$grammar = DB::connection()->withTablePrefix(new ExtendedMySqlGrammar());
// set new grammar class
DB::connection()->setSchemaGrammar($grammar);
// get custom schema object
$schema = DB::connection()->getSchemaBuilder();
// bind new blueprint class
$schema->blueprintResolver(function($table, $callback) {
return new ExtendedBlueprint($table, $callback);
});
// then create tables
$schema->create('table name', function(ExtendedBlueprint $table)
{
$table->increments('id');
$table->text('sentence');
$table->string('author')->nullable();
$table->string('source')->nullable();
$table->set('difficulty', range(1, 10)); // use our new mysql type
$table->boolean('enabled')->default(true);
});
发布于 2020-05-20 23:50:32
当您需要创建自定义列而无需创建其他文件来描述扩展语法时,我的简单一次性解决方案。在这里,我将自定义类型rsvp_statuses
添加到PostgresGrammar
中
public function up()
{
DB::connection()->setSchemaGrammar(new class extends PostgresGrammar {
protected function typeRsvp_statuses(\Illuminate\Support\Fluent $column)
{
return 'rsvp_statuses';
}
});
Schema::create('mytable', function (Blueprint $table) {
$table->bigIncrements('id');
//...
$table->addColumn('rsvp_statuses', 'status');
$table->timestamps();
});
}
发布于 2018-06-08 08:51:12
扩展laravel数据库模式方法并不太难。就像罗曼写的那样,你也可以更新你的
vendor/laravel/framework/src/Illuminate/Database/Schema/Grammers/MysqlGrammer.php
/**
* Create the column definition for an set type.
*
* @param \Illuminate\Support\Fluent $column
* @return string
*/
protected function typeSet(Fluent $column){
return "set('".implode("', '", $column->allowed)."')";
}
vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php
/**
* Create a new set column on the table.
*
* @param string $column
* @param array $allowed
* @return \Illuminate\Support\Fluent
*/
public function set($column, array $allowed){
return $this->addColumn('set', $column, compact('allowed'));
}
之后,按Ctrl + C终止您的服务器,然后输入php artisan serve以启动laravel。
https://stackoverflow.com/questions/24288633
复制相似问题