Laravel 删除数据 - SQLSTATE [42S22]:找不到列:1054 未知列
Posted
技术标签:
【中文标题】Laravel 删除数据 - SQLSTATE [42S22]:找不到列:1054 未知列【英文标题】:Laravel delete data - SQLSTATE[42S22]: Column not found: 1054 Unknown column 【发布时间】:2020-02-29 14:44:33 【问题描述】:从数据库中删除数据时如何解决 laravel 中外键名称的问题。我更改了类文件中关系的名称,但仍然无法正常工作。我需要在哪里进行更改?
"SQLSTATE[42S22]: 列未找到: 1054 'where 子句'中的未知列 'kontakt.id' (SQL: select * from kontakt
where kontakt
.id
= 1 limit 1)"
class User extends Model
public $table = "user";
public function kontakt()
return $this->hasMany('App\kontakt');
class kontakt extends Model
public $table = "kontakt";
public function user()
return $this->belongsTo('App\User','id_user','id_kontakt');
Schema::create('user', function (Blueprint $table)
$table->bigIncrements('id_user');
$table->string('imie_user');
$table->string('nazwisko_user');
$table->string('haslo_user');
$table->string('email')->unique();
Schema::create('kontakt', function (Blueprint $table)
$table->bigIncrements('id_kontakt');
$table->string('imie_kontakt');
$table->string('nazwisko_kontakt');
$table->string('opis_kontakt');
$table->string('miasto_kontakt');
$table->string('ulica_kontakt');
$table->string('nr_bloku_kontakt');
$table->string('nr_mieszkania_kontakt');
$table->string('telefon_kontakt');
$table->string('nr_konta_kontakt');
$table->string('nip_kontakt');
$table->unsignedBigInteger('id_user');
$table->foreign('id_user')->references('id_user')->on('user');
)
public function deletekontakt($id_kontakt)
$kontakt = kontakt::find($id_kontakt);
$kontakt->delete();
return redirect('kontakty');
【问题讨论】:
【参考方案1】:Eloquent 还会假设每个表都有一个名为 id 的主键列。你可以定义一个$primaryKey
属性来覆盖这个约定。
在您的 kontakt
模型中定义主键:
class kontakt extends Model
public $table = "kontakt";
protected $primaryKey = 'id_kontakt';
public function user()
return $this->belongsTo('App\User','id_user','id_kontakt');
也在用户模型中。
protected $primaryKey = 'id_user';
对于删除,你也可以使用destroy()方法。
kontakt::destroy($id_kontakt);
【讨论】:
是的:) 你可以直接删除reocrd。以上是关于Laravel 删除数据 - SQLSTATE [42S22]:找不到列:1054 未知列的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[HY000] [1049] 未知数据库 'laravel'
Laravel:数据表的 SQLSTATE [23000] 错误
Laravel / MySQL 错误:SQLSTATE[HY000]:一般错误:1835 格式错误的通信数据包
MySQL + Laravel:SQLSTATE [HY000] [1045] 用户'so'@'localhost'的访问被拒绝,但连接数据正常并且配置缓存被清除