Gun*_*ney 14 php mysql laravel laravel-5 laravel-5.3
我正在使用Laravel和Eloquent两年,今天我决定安装一个新的Laravel 5.3并尝试使用它.
我使用了我的旧数据库模式并创建了我的模型,定义了可填充的列.这就是我的Page
模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Page extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'language',
'title',
'slug',
'url',
'description',
'tags',
'wireframe',
'order',
'is_active'
];
public function menus()
{
return $this->belongsToMany(Menu::class);
}
}
Run Code Online (Sandbox Code Playgroud)
url
属性是TEXT
MySQL上的一个类型列,所以如果我在创建模型时没有传递任何值,它应该是一个空字符串.相反,我一直在收到SQLSTATE[HY000]: General error: 1364 Field 'url' doesn't have a default value
错误.
这是我尝试创建Post模型:
Page::create([
'title' => $root_menu['title'],
'slug' => $root_menu['slug'],
'language' => $this->language,
'wireframe' => key(config('cms.wireframe')),
'order' => 0
]);
Run Code Online (Sandbox Code Playgroud)
这是与Laravel 5.3相关的问题还是我遗漏了什么?在此先感谢您的帮助.
pat*_*cus 42
@Nicklas解释了错误的原因.
然而,现在发生这种情况的原因是Laravel 5.3 strict
默认使用MySQL模式.
如果您想恢复以前的行为,请更新您的config/database.php
文件并设置'strict' => false
连接.
Nic*_*ank 10
您试图将没有"URL"属性的对象插入到具有"URL"列而没有默认值的表中.因此,数据库无法知道如何处理该列.
你可以做三件事之一.
如果您需要进一步的帮助,请发布您的迁移或架构.
归档时间: |
|
查看次数: |
15229 次 |
最近记录: |