ฉันกำลังพยายามสร้างความสัมพันธ์ระหว่าง 2 ตาราง money_trade
และ money_trade_deposits
สคีมาของฉันในตาราง money_trade_deposits
คือ:
Schema::create('money_trade_deposits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('mt_dep_number');
$table->unsignedBigInteger('money_trades_id');
$table->integer('amount');
$table->string('payment_method');
$table->foreign('money_trades_id')->references('id')->on('money_trades')->onDelete('cascade');
$table->timestamps();
});
MoneyTradeDepositController.php
public function store(Request $request)
{
$request->validate([
'amount' => ['required', 'string', 'max:255'],
'payment_method' => ['required', 'string', 'max:255'],
]);
$moneyTradeDeposit = new MoneyTradeDeposit();
$moneyTradeDeposit->mt_dep_number = uniqid('MTDepNumber-');
$moneyTradeDeposit->amount = $request->input('amount');
$moneyTradeDeposit->payment_method = $request->input('payment_method');
$moneyTradeDeposit->money_trades_id = MoneyTrade::get('id');
$moneyTradeDeposit->save();
return redirect()->route('mt.deposit')->withMessage('Added a New Deposit');
}
โมเดล MoneyTradeDeposit.php ของฉันมี
protected $table = 'money_trade_deposits';
public function moneytrade()
{
return $this->belongsTo(MoneyTrade::class);
}
มุมมองเบลดของฉันมีโมดอลที่จ่ายอินพุตเป็น amount
และ payment_method
ตอนนี้ฉันกำลังพยายามดึง id
จากตาราง money_trade
ของฉัน และแทรกลงในตาราง money_trade_deposits
ของฉันเป็น money_trades_id
อย่างไรก็ตาม ฉันได้รับข้อผิดพลาดนี้ เมื่อฉันดัมพ์ $request ฉันสามารถรับค่าได้ แต่เมื่อฉันดัมพ์ $moneyTradeDeposit ฉันได้รับข้อผิดพลาดทั้งหมด:
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '[]' for column `fssdb`.`money_trade_deposits`.`money_trades_id` at row 1 (SQL: insert into `money_trade_deposits` (`mt_dep_number`, `amount`, `payment_method`, `money_trades_id`, `updated_at`, `created_at`) values (MTDepNumber-5f9f198f6c2b3, 1000, MoneyTrade, [], 2020-11-01 20:24:47, 2020-11-01 20:24:47))
เมื่อฉัน dd($request)
ฉันได้รับ
เมื่อฉันทำ dd($moneyTradeDeposit);
ฉันได้รับ
MoneyTradeController.php
สำหรับการอ้างอิงของฉันมีวิธีการ store
ซึ่งก็คือ
public function store(Request $request)
{
$request->validate([
'bank' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255'],
'mt_first_name' => ['required', 'string', 'max:255'],
'mt_last_name' => ['required', 'string', 'max:255'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'mt_account' => ['required', 'string', 'max:255'],
'mt_deposit' => ['required', 'string', 'max:255'],
'mt_leverage' => ['required', 'string', 'max:255'],
]);
$moneyTrade = new MoneyTrade();
$moneyTrade->mt_number = uniqid('MTNumber-');
$moneyTrade->bank = $request->input('bank');
$moneyTrade->email = $request->input('email');
$moneyTrade->mt_first_name = $request->input('mt_first_name');
$moneyTrade->mt_last_name = $request->input('mt_last_name');
$moneyTrade->password = $request->input('password');
$moneyTrade->mt_account = $request->input('mt_account');
$moneyTrade->mt_deposit = $request->input('mt_deposit');
$moneyTrade->mt_leverage = $request->input('mt_leverage');
$moneyTrade->user_id = auth()->id();
$moneyTrade->save();
return redirect()->route('home')->withMessage('MoneyTrade Account Created');
}
และรุ่น MoneyTrade.php
class MoneyTrade extends Model
{
// protected $guarded = [];
public function user()
{
return $this->belongsTo(User::class);
}
}
และสคีมาตาราง money_trades
Schema::create('money_trades', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('mt_number');
$table->unsignedBigInteger('user_id');
$table->string('bank');
$table->string('email');
$table->string('mt_first_name');
$table->string('mt_last_name');
$table->string('password');
$table->string('mt_account');
$table->string('mt_deposit');
$table->string('mt_leverage');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
ดูเหมือนว่า money_trades_id
คือปัญหา
ใครสามารถช่วยฉันหน่อยได้ไหม? ขอบคุณมาก.
MoneyTrade::get('id')
คุณช่วยโพสต์โค้ดนั้นที่นี่ได้ไหม หรือทิ้งผลลัพธ์ - person gmfm   schedule 01.11.2020SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '[{"id":1}]' for column
fssdb.
money_trade_deposits.
money_trades_id` ที่แถว 1 (SQL: แทรกลงในค่าmoney_trade_deposits
(mt_dep_number
,amount
,payment_method
,money_trades_id
,updated_at
,created_at
) (MTDepNumber-5f9f1f83d1a02, 1000, Money การค้า [{ รหัส:1}], 2020-11-01 20:50:11, 2020-11-01 20:50:11))` - person Jemy   schedule 01.11.2020MoneyTrade::get('id')
ดูเหมือนจะส่งคืนออบเจ็กต์อาร์เรย์ที่มีคุณสมบัติid
ซึ่งอาจเป็นตัวแทนแถวmoney_trade
ทั้งหมดในฐานข้อมูล ฉันไม่คิดว่านี่คือฟังก์ชันที่คุณกำลังมองหาที่นี่ - person gmfm   schedule 01.11.2020id
จากตารางmoney_trades
ได้อย่างไร - person Jemy   schedule 01.11.2020money_trade
แถวใดควรเชื่อมโยงกับmoney_trade_deposits
แถวใด สิ่งเหล่านี้ถูกสร้างขึ้นในคำขอเดียวกันหรือไม่ - person gmfm   schedule 02.11.2020id
จากตารางmoney_trades
เพื่อใส่ลงในตารางmoney_trade_deposits
ของฉันเป็นmoney_trades_id
ฉันไม่แน่ใจว่าต้องทำอย่างไร เนื่องจากฉันไม่รู้วิธีแก้ไขโค้ดMoneyTrade::get('id')
ฉันลองใช้MoneyTrade::find('id')
แต่ไม่ได้ผลเนื่องจากจะให้ค่าว่าง - person Jemy   schedule 02.11.2020MoneyTrade
ได้หรือไม่ - person gmfm   schedule 02.11.2020MoneyTrade
แล้ว ฉันได้ลองวิธีอื่นแล้ว แต่ฉันไม่รู้วิธีแก้ไขจริงๆ ขอบคุณมาก - person Jemy   schedule 02.11.2020money_trade
ใหม่ด้วย$moneyTrade->save()
คุณสามารถโทร$moneyTrade->id
เพื่อรับ id ของแถวmoney_trade
ที่เพิ่มใหม่ นี่คือ id ที่money_trade_deposits.money_trades_id
อ้างอิงถึง - person gmfm   schedule 02.11.2020$moneyTradeDeposit->money_trades_id = MoneyTrade::get('id');
ให้ค่าจำนวนเต็มและลองตรวจสอบ ใช้งานได้หรือไม่ - person sta   schedule 02.11.2020Schema
ของฉัน ฉันมี$table->unsignedBigInteger('money_trade_id');
และฉันยังคงได้รับข้อผิดพลาดเดิม SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '[{id:1}]' for column fssdb.money_trade_deposits.money_trades_id` ที่แถว 1 (SQL: แทรกลงใน money_trade_deposits (mt_dep_number, จำนวนเงิน, วิธีการชำระเงิน, money_trades_id, อัปเดต_at, สร้างขึ้น_at) ค่า (MTDepNumber-5f9f1f83d1a02, 1000, MoneyTrade, [{id:1}], 2020-11-01 20:50:11, 2020-11-01 20:50:11))` - person Jemy   schedule 03.11.2020$moneyTradeDeposit->money_trades_id
ยอมรับเฉพาะค่าจำนวนเต็ม เช่น$moneyTradeDeposit->money_trades_id = 1;
- person sta   schedule 03.11.2020