繁体   English   中英

Laravel 删除没有“id”的行

[英]Laravel delete row with no 'id'

我正在使用 laravel 创建一个小应用程序。 此应用程序使用远程数据库。 此数据库没有 AI id。 因此,当我尝试从数据库中删除一行时(我使用 'where::' 函数选择了该行),我收到以下错误:

Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: delete from `mailbox` where `id` is null)

是否有可能使用除主 ID 之外的另一个键来删除行?

如果你的表有一个模型,你可以使用类似的东西:

Model::where('column', $value)->delete();

其中Model是您的模型的名称等。您不需要自己编写整个查询。 您可以 Eloquent 使删除查询根据需要变得复杂(即多个where查询)。

如果您有主键,请在模型中设置

public $primary = 'my_PK';

如果您没有任何 PK,请使用自定义查询:

$q = 'DELETE FROM my_table where my_field = ?'
\DB::delete($q, [$my_data]);

只是不要删除模型!

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(); 

模型更新()同样的问题!

使用新查询而不是您选择的实例。 例如:

// logs table do not have a primary key
$log = Log::where('a',123)->first();
//do not:
$log->delete();
//try this:
Log::where('a',123)->delete();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM