Php 传递给Lightning\Database\Eloquent\Builder::create()的参数1必须是数组类型

Php 传递给Lightning\Database\Eloquent\Builder::create()的参数1必须是数组类型,php,laravel,laravel-6,php-7.3,Php,Laravel,Laravel 6,Php 7.3,我有一个模型,我计划将输入保存到两个不同的表中,但我有一个错误 Symfony\Component\Debug\Exception\fatalthrowable错误参数1 传递给Lightning\Database\Eloquent\Builder::create()的必须为 在中调用的类型数组、给定的对象 C:\xampp\htdocs\blog\vendor\laravel\framework\src\light\Support\Traits\ForwardsCalls.php 第23行 第

我有一个模型,我计划将输入保存到两个不同的表中,但我有一个错误

Symfony\Component\Debug\Exception\fatalthrowable错误参数1 传递给Lightning\Database\Eloquent\Builder::create()的必须为 在中调用的类型数组、给定的对象 C:\xampp\htdocs\blog\vendor\laravel\framework\src\light\Support\Traits\ForwardsCalls.php 第23行

第一个表是
Transaction\u in
,第二个表是
Transaction\u in\u detail
。我计划在中使用
idTransaction\u作为两个表之间的连接器,而该列不是primaryKey(这是一种好的做法吗)?我可以将输入保存到
表中的
transaction\u,但仍然无法将输入保存到第二个表中,并且我不知道如何将
列中的
idTransaction\u作为连接器

public function store(Request $request)
{
    $request->validate([
        'supplier_name' => 'required',
        'transaction_in_date' => 'required|before_or_equal:today',
        'device_type_name' => 'required',
        'device_brand_name' => '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_name');
    $transaction_in->tanggal_transaksi = $request->input('transaction_in_date');
    $transaction_in->save();
    $transaction_in->update(['idTransaction_in' => sprintf('TIN-%04d', $transaction_in->id)]);

    $lastid=Transaction_in::create($transaction_in)->idTransaction_in;
    if(count($request->device_type_name)>0){
        foreach ($request->device_type_name as $item => $v) {
            $data2=array(
                'Transaction_in_id' => $lastid,
                'DeviceType_id' => $request->device_type_name[$item],
                'DeviceBrand_id' => $request->device_brand_name[$item],
                'spek_device' => $request->device_spec[$item],
                'harga_device' => $request->price[$item],
                'jumlah_device' => $request->amount[$item],
                'total_harga_device' => $request->total_price[$item]
            );
            Transaction_in_detail::insert($data2);
        }
    }

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

DeviceType\u id
Devicebrand\u id
是外键。

我看到您在这一行有问题

$lastid=Transaction\u in::create($Transaction\u in)->idTransaction\u in;
中的
$transaction_是对象,
create
方法要求传入
array

如果其他所有操作都正确,则应该可以:

$lastid=Transaction\u in::create($Transaction\u in->toArray())->idTransaction\u in;

您已经
保存了数据,但是您也使用了
创建
。它将在数据库中创建重复记录

我会给你一个解决方案:

$Transaction=Transaction\u in::create([
'idTransaction_id'=>'0',
'supplier\u id'=>$request->input('supplier\u name')//为什么供应商名称分配了供应商id?
'tanggal_transaksi'=>$request->input('transaction_in_date'),
]);
$transaction=tap($transaction\u in)->更新([
'idTransaction_in'=>sprintf('TIN-%04d',$Transaction->id)
]);
$lastId=$transaction->idTransaction\u-in;

Hi,您的回答确实删除了错误,但我收到了一个新错误'SQLSTATE[23000]:完整性约束冲突:1062键'PRIMARY'的重复条目'51'(SQL:insert-in
transaction\u-ins
idTransaction\u in
Supplier\u id
tanggal\u transaksi
updated\u at
created\u in
id
)值(TIN-0051,2019-10-08,2019-10-28 18:06:31,2019-10-28 18:06:31,51))`因为两次插入了两个id。请尝试这样做,而不是将
toArray
$transaction>拉入('id')->toArray()
您的意思是这样的
$lastid=Transaction\u in::create($Transaction\u in->pull(id))->toArray();
,它可以工作,但会给我另一个错误“使用未定义的常量id-假定的'id'(这将在未来的PHP版本中引发错误)”你忘了将
id
用单引号括起来。复制我的确切代码很抱歉,我又麻烦了一次,但我在::pull()中调用了未定义的方法App\Transaction\u
你的回答给我另一个错误`SQLSTATE[22007]:无效的日期时间格式:1366不正确的整数值:
blog
transaction\u in\u details
transaction\u in\u id
第1行的列“TIN-0082”(SQL:插入
transaction\u in\u details
Transaction\u-in\u-id
DeviceType\u-id
DeviceBrand\u-id
spek\u-device
harga\u-device
收费设备总数
)值(TIN-0082,2,1234,23444,54859896))“不,不是。这是您的其他代码中的错误。我只回答您的问题,而不是修复您的所有代码。我认为您需要更清楚地了解您想问什么。请发布您的迁移表和模型。至少在中为
Transaction\u和
Transaction\u详细信息
发布迁移和模型。