输入数据未按预期在Laravel 6中存储

我有一个带有动态表的表单,可以在其中添加/删除行,当我将数据保存到Transaction_in时,我想将数据保存到Transaction_in_detailTransaction_in表中该表将按预期保存,但不会保存到Transaction_in_detail

无论提交表中有多少行,我提交数据时,Transaction_in_detail表中保存的数据总会给我10条所有空行。

输入数据未按预期在Laravel 6中存储

商店控制器

public function store(Request $request)
{
    $request->validate([
        'supplier_id' => 'required','transaction_in_date' => 'required|before_or_equal:today','device_type_id' => 'required','device_brand_id' => 'required','device_spec' => 'required|max:255','price' => 'required','amount' => 'required','total_price' => 'required','keterangan' => 'Nullable',]);

    $transaction_in = new Transaction_in();
    $transaction_in->idTransaction_in = "0";
    $transaction_in->Supplier_id = $request->input('supplier_id');
    $transaction_in->tanggal_transaksi = $request->input('transaction_in_date');
    $transaction_in->save();

    foreach ($transaction_in as $tin) {
        $tdin[] = [
            'Transaction_in_id' => $transaction_in->id[$tin],'DeviceType_id' => $transaction_in->device_type_id[$tin],'DeviceBrand_id' => $transaction_in->device_brand_id[$tin],'spek_device' => $transaction_in->device_spec[$tin],'harga_device' => $transaction_in->price[$tin],'jumlah_device' => $transaction_in->amount[$tin],'total_harga_device' => $transaction_in->total_price[$tin]
        ];
        Transaction_in_detail::insert($tdin);
    }
    $transaction_in->update(['idTransaction_in' => sprintf('TIN-%04d',$transaction_in->id)]);

    return redirect('/transactionsin')->with('success','Transaction success');
}

以下是dd()的输出。

输入数据未按预期在Laravel 6中存储

我不知道错误在哪里;这就是模型。

Transaction_in模型

class Transaction_in extends Model
{
    protected $guarded = [];
    public function get_suppliers()
    {
        return $this->belongsTo(Supplier::class,'Supplier_id');
    }
    public function get_devicetypes()
    {
        return $this->belongsToMany(DeviceType::class,'DeviceType_id');
    }
    public function get_devicebrands()
    {
        return $this->belongsToMany(DeviceBrand::class,'DeviceBrand_id');
    }
}

Transaction_in_detail模型

class Transaction_in_detail extends Model
{
    protected $guarded = [];
    public function get_transction_in_id()
    {
        return $this->belongsTo(Transaction_in::class,'Transaction_in_id');
    }
    public function get_devicetypes()
    {
        return $this->belongsToMany(DeviceType::class,'DeviceBrand_id');
    }
}

该表单位于Transaction_in视图内,并且Store Controller来自transaction_inControllerDeviceType_idDeviceBrand_id都是外键。

这是数据库工作中的Transaction_in表。

输入数据未按预期在Laravel 6中存储

liaozhongfa 回答:输入数据未按预期在Laravel 6中存储

删除功能中的foreach,然后可以将数据直接插入明细表中的交易记录

--
,

您的存储方法有点奇怪,这是我认为您应该做的:

public function store(Request $request)
{
    $request->validate([
        'supplier_id' => 'required','transaction_in_date' => 'required|before_or_equal:today','device_type_id' => 'required','device_brand_id' => 'required','device_spec' => 'required|max:255','price' => 'required','amount' => 'required','total_price' => 'required','keterangan' => 'Nullable',]);


    $transaction_in = new Transaction_in();
    $transaction_in->idTransaction_in = "0";
    $transaction_in->Supplier_id = $request->get('supplier_id');
    $transaction_in->tanggal_transaksi = $request->get('transaction_in_date');
    $transaction_in->save();

    Transaction_in_detail::create([
        'Transaction_in_id' => $transaction_in->id,'DeviceType_id' => $request->get('device_type_id'),'DeviceBrand_id' => $request->get('device_brand_id'),'spek_device' => $request->get('device_spec'),'harga_device' => $request->get('price'),'jumlah_device' => $request->get('amount'),'total_harga_device' => $request->get('total_price')
    ]);

    $transaction_in->update(['idTransaction_in' => sprintf('TIN-%04d',$transaction_in->id)]);

    return redirect('/transactionsin')->with('success','Transaction success');
}
,

我认为由于循环需要对表列进行计数,所以所有10行都变为空。

您的代码

$transaction_in = new Transaction_in();
        $transaction_in->idTransaction_in = "0";
        $transaction_in->Supplier_id = $request->input('supplier_id');
        $transaction_in->tanggal_transaksi = $request->input('transaction_in_date');
        $transaction_in->save();

        foreach ( $transaction_in as $tin) {
            $tdin[] = [
                'Transaction_in_id' => $transaction_in->id[$tin],'DeviceType_id' => $transaction_in->device_type_id[$tin],'DeviceBrand_id' => $transaction_in->device_brand_id[$tin],'spek_device' => $transaction_in->device_spec[$tin],'harga_device' => $transaction_in->price[$tin],'jumlah_device' => $transaction_in->amount[$tin],'total_harga_device' => $transaction_in->total_price[$tin]
            ];
            Transaction_in_detail::insert($tdin);
        }

我的代码

$transaction_in = new Transaction_in();
        $transaction_in->idTransaction_in = "0";
        $transaction_in->Supplier_id = $request->input('supplier_id');
        $transaction_in->tanggal_transaksi = $request->input('transaction_in_date');
        $transaction_in->save();
$transaction_in1 = new Transaction_in();
        foreach ( $transaction_in1 as $tin) {
            $tdin[] = [
                'Transaction_in_id' => $transaction_in1->id[$tin],'DeviceType_id' => $transaction_in1->device_type_id[$tin],'DeviceBrand_id' => $transaction_in1->device_brand_id[$tin],'spek_device' => $transaction_in1->device_spec[$tin],'harga_device' => $transaction_in1->price[$tin],'jumlah_device' => $transaction_in1->amount[$tin],'total_harga_device' => $transaction_in1->total_price[$tin]
            ];
            Transaction_in_detail::insert($tdin);
        }
本文链接:https://www.f2er.com/3162162.html

大家都在问