【发布时间】:2020-03-16 10:05:15
【问题描述】:
我正在开发一个使用 Laravel 5.5 的项目,其中一个模型的 ID 由用户定义。在模型下方,将 $incrementing 设置为 false 并将其放在 $fillable 数组中。
class AIOpportunity extends Model
{
protected $table = 'ai_opportunity';
protected $primaryKey = 'id_opportunity';
public $incrementing = false;
protected $fillable = [
'id_opportunity',
'budget',
'created_by'
];
}
问题:尝试执行此查询时:
$rec = AIOpportunity::where('id_opportunity', 'abc')->first();
它在数据库中执行了以下查询:
select * from ai_opportunity where id_opportunity=abc
由于类型而引发错误。我还能做些什么让 Eloquent 明白这是一个 varchar 字段吗?
感谢您的帮助
【问题讨论】:
-
你的错误到底是什么?
-
表示该表不存在。确实如此,这只是当您尝试运行此查询时 MySQL 抛出的错误消息
-
那么该表不存在。它不是 varchar 或不是。实际上
varchar接受所有字段。运行php artisan optimize,如果这不能解决您的问题,请检查您的表名 -
可以分享一下ai_opportunity表迁移吗?
-
添加
protected $keyType = 'string';
标签: laravel laravel-5 eloquent