我正在做一个使用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
字段吗?
1条答案
按热度按时间dldeef671#
我发现了这个问题。这不是一个Laravel的问题,我的问题中的设置是正确的。问题是在我本地的数据库中。虽然表存在,当我通过PhPMyAdmin访问时,它看起来很好,我可以看到它,但也有错误消息说,表不存在。
是的,非常奇怪。我刚刚删除了本地数据库,并从生产中恢复了备份。它工作正常。问题出在数据库本身,而不是Laravel应用程序。