SQLSTATE[42S22]: 未找到列:'where clause' 中的 1054 未知列 ''
SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause'
我一直收到错误
"SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where
clause' "
使用 sql 输出:
update `contactables` set `updated_at` = 2019-08-16 20:35:56, `active` = 0 where `` is null and `key_ID` = 235852
我试图在多态模型上使用 eloquent firstOrNew/firstOrCreate 方法。我已经尝试了各种变体:
$record1 = Contactable::firstOrNew(
[
'contactable_ID' => $location_ID,
'user_ID' => $user_ID,
'contactable_type' => Location::class,
]);
$record = Contactable::find($record1->key_ID);
$record->fill(
[
'active' => $active,
]);
$record->save();
$primaryKey = 'key_ID';
$guarded = [];
$fillable = [
'user_ID',
'use_loc_contact_info',
'contactable_ID',
'contactable_type',
'active',
'flag',
'print_and_save',
'marketing',
];
这似乎只发生在尝试更新我实际更改了某些内容的记录时。创建记录似乎工作正常,更新我不更改任何内容的地方似乎工作。我完全不知道下一步该怎么做...
我看过这些(以及其他十几个没有真正相关的):
Laravel eloquent firstOrNew method doesn't update or insert
laravel auth:api returns SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `users` where ``
感谢任何帮助或新问题!
在四处寻找之后,我终于找到了这个 based on this issue I stumbled across 的解决方案。我忘了这个 table 有一个组合键,这是这个问题的根源。
我将其包含在我的自定义数据透视模型中以覆盖 "setKeysForSaveQuery":
的 laravel 默认值
class Contactable extends MorphPivot {
...
protected function setKeysForSaveQuery(Builder $query) {
$query
//Put appropriate values for keys here:
->where('contactable_type', '=', $this->contactable_type)
->where('contactable_ID', '=', $this->contactable_ID)
->where('user_ID', '=', $this->user_ID);
return $query;
}
...
}
它非常有效,解决了导致 eloquent 创建 ...where '' is null and 'key_ID' = 235852
查询
的问题
我还参考了以下内容,这些内容为我的解决方案提供了信息,但大部分都没有解决我过于复杂的自定义多态关系上的复合键问题。我希望这条路能帮助别人。
Laravel eloquent firstOrNew method doesn't update or insert
Creating and Update Laravel Eloquent
https://github.com/laravel/framework/issues/2393
https://github.com/laravel/framework/issues/5355
https://laravel.com/docs/5.7/migrations#creating-indexes
https://blog.maqe.com/solved-eloquent-doesnt-support-composite-primary-keys-62b740120f
https://www.reddit.com/r/laravel/comments/alrgwk/composite_key_in_table_only/
我在 Laravel 5.4 中使用了此修复程序,与 Kevin Foster 之前的回答非常相似,摘自 https://github.com/laravel/framework/issues/5517
在您的 Laravel 模型中为有问题的 table 插入这个 - 插入复合键的列名代替 column1 和 column2
解决了我的问题 - 感谢之前的贡献者
/**
* Set the keys for a save update query.
* This is a fix for tables with composite keys
* TODO: Investigate this later on
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
protected function setKeysForSaveQuery(Builder $query)
{
$query
//Put appropriate values for your keys here:
->where('column1', '=', $this->column1)
->where('column2', '=', $this->column2);
return $query;
}
您还需要包括:
use \Illuminate\Database\Eloquent\Builder;
我一直收到错误
"SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' "
使用 sql 输出:
update `contactables` set `updated_at` = 2019-08-16 20:35:56, `active` = 0 where `` is null and `key_ID` = 235852
我试图在多态模型上使用 eloquent firstOrNew/firstOrCreate 方法。我已经尝试了各种变体:
$record1 = Contactable::firstOrNew(
[
'contactable_ID' => $location_ID,
'user_ID' => $user_ID,
'contactable_type' => Location::class,
]);
$record = Contactable::find($record1->key_ID);
$record->fill(
[
'active' => $active,
]);
$record->save();
$primaryKey = 'key_ID';
$guarded = [];
$fillable = [
'user_ID',
'use_loc_contact_info',
'contactable_ID',
'contactable_type',
'active',
'flag',
'print_and_save',
'marketing',
];
这似乎只发生在尝试更新我实际更改了某些内容的记录时。创建记录似乎工作正常,更新我不更改任何内容的地方似乎工作。我完全不知道下一步该怎么做...
我看过这些(以及其他十几个没有真正相关的):
Laravel eloquent firstOrNew method doesn't update or insert
laravel auth:api returns SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `users` where ``
感谢任何帮助或新问题!
在四处寻找之后,我终于找到了这个 based on this issue I stumbled across 的解决方案。我忘了这个 table 有一个组合键,这是这个问题的根源。
我将其包含在我的自定义数据透视模型中以覆盖 "setKeysForSaveQuery":
的 laravel 默认值class Contactable extends MorphPivot { ... protected function setKeysForSaveQuery(Builder $query) { $query //Put appropriate values for keys here: ->where('contactable_type', '=', $this->contactable_type) ->where('contactable_ID', '=', $this->contactable_ID) ->where('user_ID', '=', $this->user_ID); return $query; } ... }
它非常有效,解决了导致 eloquent 创建 ...where '' is null and 'key_ID' = 235852
查询
我还参考了以下内容,这些内容为我的解决方案提供了信息,但大部分都没有解决我过于复杂的自定义多态关系上的复合键问题。我希望这条路能帮助别人。
Laravel eloquent firstOrNew method doesn't update or insert
Creating and Update Laravel Eloquent
https://github.com/laravel/framework/issues/2393
https://github.com/laravel/framework/issues/5355
https://laravel.com/docs/5.7/migrations#creating-indexes
https://blog.maqe.com/solved-eloquent-doesnt-support-composite-primary-keys-62b740120f
https://www.reddit.com/r/laravel/comments/alrgwk/composite_key_in_table_only/
我在 Laravel 5.4 中使用了此修复程序,与 Kevin Foster 之前的回答非常相似,摘自 https://github.com/laravel/framework/issues/5517
在您的 Laravel 模型中为有问题的 table 插入这个 - 插入复合键的列名代替 column1 和 column2
解决了我的问题 - 感谢之前的贡献者
/**
* Set the keys for a save update query.
* This is a fix for tables with composite keys
* TODO: Investigate this later on
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
protected function setKeysForSaveQuery(Builder $query)
{
$query
//Put appropriate values for your keys here:
->where('column1', '=', $this->column1)
->where('column2', '=', $this->column2);
return $query;
}
您还需要包括:
use \Illuminate\Database\Eloquent\Builder;