【问题标题】:Can't delete a collection of Laravel eloquent无法删除 Laravel eloquent 的集合
【发布时间】:2021-07-15 15:59:07
【问题描述】:

我正在从 db 中检索一个集合并希望将其删除。这是代码。

 $signal_id = $request->del_signal_id;
    $signal_details = VwDistressSignals::where('signal_id', $signal_id)->delete();
    return "Success";
}

这就是错误。

message: "SQLSTATE[HY000]: General error: 1395 Can not delete from join view 'dvp.vw_distresssignals' (SQL: delete from `vw_distresssignals` where `signal_id` = 2)"

我也试过给所有的列名。这是模型...

<?php

namespace App\Models;

use Reliese\Database\Eloquent\Model as Eloquent;

class VwDistressSignals extends Eloquent
{
    protected $table = 'vw_distresssignals';
}

【问题讨论】:

  • 向我们展示VwDistressSignals 模型
  • 我已经编辑了问题并编辑了模型。

标签: mysql laravel orm


【解决方案1】:

发生此错误是因为您的关系未正确定义。

【讨论】:

  • 是的,我觉得我太傻了,我用错了模型。但是我为什么从集合中得到正确的数据,是不是因为某种关系?
【解决方案2】:

循环删除

$signal_id = $request->del_signal_id;
$signal_details = VwDistressSignals::where('signal_id', $signal_id)->get();

foreach($signal_details as $detail) 
{
  $detail->delete();
}

return "Success";

【讨论】:

    【解决方案3】:

    由于您尚未共享模型,我假设它对应于数据库视图而不是表。

    如果是这样,请尝试从基表中删除,因为连接视图不可删除。

    DELETE ... 不允许加入视图。 https://dev.mysql.com/doc/refman/5.7/en/view-updatability.html

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2020-06-25
      • 2019-02-16
      • 2017-04-29
      • 1970-01-01
      相关资源
      最近更新 更多