由于数据库中缺少列,我的测试失败了。奇怪的是柱子实际存在。
下面是我运行的一个小测试,以证明该列存在。
控制器
public function index()
{
if (Schema::hasColumn('occurrences', 'occurrenceable_type')) {
echo 'yes I have the bloody column';
} else {
echo 'no column for me!';
}
}
返回>> “是的,我有血腥的专栏&#39 ;;
测试
public function an_admin_can_create_a_new_occurrence()
{
if (Schema::hasColumn('occurrences', 'occurrenceable_type')) {
echo 'yes I have the bloody column';
} else {
echo 'no column for me!';
}
}
返回>> '没有列给我'
测试和控制器之间的差异是
控制器:数据库是MySQL数据库连接
测试:数据库是在内存中运行的MySQLite数据库。
测试实现use RefreshDatabase;
,如果在MySQL数据库上运行artisan migrate:refresh
,则列存在。
这是用于构建该表的迁移
````
Schema::create('occurrences', function (Blueprint $table) {
$table->increments('id');
$table->integer('occurrenceable_id');
$table->integer('occurrenceable_type');
$table->integer('occurrence_status_id');
$table->text('days');
$table->string('tutor')->nullable();
$table->integer('location_id')->nullable();
$table->dateTime('start_date')->nullable();
$table->dateTime('end_date')->nullable();
$table->text('additional_info')->nullable();
$table->timestamps();
$table->softDeletes();
$table->integer('created_by');
$table->integer('updated_by');
$table->integer('deleted_by');
});
````
为什么它们之间会有差异?我该如何解决?
答案 0 :(得分:0)
如果测试是在MySQL数据库上运行的话,这似乎是SQLite数据库的一个问题,问题没有出现,测试运行成功。