我正在使用laravel创建一个小应用程序。此应用程序使用远程数据库。此数据库没有AI ID。因此,当我尝试从数据库中删除一行时(我使用'where ::'函数选择),我收到以下错误:
Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: delete from `mailbox` where `id` is null)
是否有可能使用除主ID之外的其他键删除行?
答案 0 :(得分:2)
如果您有主键,请使用
在模型中进行设置public $primary = 'my_PK';
如果您没有任何PK,请使用自定义查询:
$q = 'DELETE FROM my_table where my_field = ?'
\DB::delete($q, [$my_data]);
答案 1 :(得分:0)
如果您的表有模型,则可以使用类似以下内容的东西:
Model::where('column', $value)->delete();
Model
是模型的名称,等等。您不需要自己编写整个查询。您可以雄辩地根据需要使删除查询变得复杂(即多个where
查询)。
答案 2 :(得分:0)
请不要删除模型!
protected $primaryKey = 'custom_id';
$model = Model::where('id', $id);
// No. It will delete all records with equals $model->custom_id for this model.
$model->delete();
// Yes. Delete only this one record.
Model::where('id', $id)->delete();
模型update()有同样的问题!