【发布时间】:2020-02-17 02:02:57
【问题描述】:
我打算将id 上的supplier 发送到transaction_in
但我有这个错误
SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (
database_name.transaction_ins, 约束transaction_ins_supplier_id_foreign外键 (Supplier_id) 参考suppliers(id) 更新级联)(SQL:插入transaction_ins(Supplier_id,updated_at,created_at) 值 (0, 2019-10-21 07:54:15, 2019-10-21 07:54:15))
这是transaction_in 迁移表
public function up()
{
Schema::create('transaction_ins', function (Blueprint $table) {
$table->bigIncrements('id');
$table->date('tanggal_transaksi');
$table->unsignedBigInteger('Supplier_id');
$table->timestamps();
//Foreign Key
$table->foreign('Supplier_id')->references('id')->on('suppliers')->onUpdate('cascade');
});
}
transaction_in型号
class Transaction_in extends Model
{
protected $guarded = [];
public function suppliers(){
return $this->belongsTo(Supplier::class);
}
}
这是supplier迁移表
public function up()
{
Schema::create('suppliers', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('nama');
$table->timestamps();
});
}
supplier型号
class Supplier extends Model
{
protected $guarded = [];
public function transactions_in(){
return $this->hasMany(Transaction_in::class);
}
}
我已经尝试了SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row (Laravel 6)的解决方案
当我从接受的答案运行查询时,它确实返回空,但我不明白这部分
如果你得到一个空的结果集,那么这意味着你的插入是 引用
order中不存在的数据。
但是supplier表中确实存在数据
我应该怎么做才能解决这个问题?
这是create.blade.php 代表transaction_in
{{ Form::open(['action' => 'TransactionsINController@store', 'method' => 'POST']) }}
<div class="form-group">
{{ Form::label('supplier_name', 'Supplier Name') }}
{{ Form::select('supplier_name', $supplierList->pluck('nama'), null, ['class' => 'form-control', 'placeholder' => 'Pick one Supplier...']) }}
</div>
<hr>
{{ Form::button('<i class="far fa-save"></i> Submit', ['type' => 'submit', 'class' => 'btn btn-info'] ) }}
{{ Form::close() }}
这是transaction_in控制器上的store方法
public function store(Request $request)
{
$request->validate([
'supplier_name' => 'required'
]);
$transaction_in = new Transaction_in();
$transaction_in->Supplier_id = $request->input('supplier_name');
$transaction_in->save();
}
【问题讨论】:
-
您所指的那个问题的答案是向您证明您没有与您尝试分配给
Supplier_id的supplier匹配的Supplier_id看起来
标签: php mysql laravel laravel-6