我在 Laravel 5 中遇到问题。当我更新数据库中的记录时,出现错误Unknown column 'id' in 'where clause'。在控制器中,我使用 WHERE 子句来获取我想要更新的记录。我的主键不是 id,类型是 bigInteger。我试过添加protected $primaryKey模型,但它不适用于 bigInteger。有什么办法可以使用我自己的主键而不是使用 id 吗?
控制器
$item = Item::where('item_id','=',$item_id)->first();
$item.name = $name;
$item.type = $type;
$item.save();
Run Code Online (Sandbox Code Playgroud) 我有复合主键,所以Laravel的save()方法不起作用.因此我需要覆盖save方法.例如,我的主键是由column_a和column_b组成的复合键.你能举例说明如何覆盖保存方法和我把它放在哪里吗?
我的主键:column_a,column_b
我尝试过以下几点:
protected function setKeysForSaveQuery(Builder $query)
{
parent::setKeysForSaveQuery($query);
$query->where('locale', '=', $this->locale);
return $query;
}
Run Code Online (Sandbox Code Playgroud)
我发现上面的代码,但它导致500内部服务器错误,即使我调用只从数据库中读取值的方法.我已将$ primaryKey ='column_a'和'locale'(在where中)设置为column_b.我不知道$ this-> locale是指什么?
这是我发现的另一种方式,但也失败了
protected $secondaryKey = 'column_b';
function newQuery()
{
$query = parent::newQuery();
$query->where($this->secondaryKey, '=', $this->type);
return $query;
}
Run Code Online (Sandbox Code Playgroud)
再一次,我不知道$ this-> type指的是什么.
在Laravel 5中,我应该在什么目录中存储图像(用于背景)以及如何在CSS文件中访问它.我的CSS文件在public/css目录中.我试图将图像放入public/images,public/assets/images但没有工作,甚至我无法直接从Web浏览器访问图像.