Php 传递给Lightning\Database\Eloquent\Builder::create()的参数1必须是数组类型
我有一个模型,我计划将输入保存到两个不同的表中,但我有一个错误 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行 第一个表是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行 第
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-intransaction\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详细信息
发布迁移和模型。