Laravel删除没有'id'的行

时间:2016-05-19 21:15:01

标签: php mysql laravel eloquent

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

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

是否有可能使用除主ID之外的其他键删除行?

3 个答案:

答案 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()有同样的问题!