سلام جناب خسروجردی عزیز
شما توی قسمت http request در انتهای ویدئو توضیحی دادید در مورد ارسال اطلاعات input ها به صورت آرایه. من سعی کردم اطلاعات را به همون صورت داخل دیتابیس insert کنم ولی به من ارور می ده
به عنوان مثال یک نمونه از فرمه ( به شکل ساده):
<form action="{{route('user.store')}}" method="POST" class="mt-5">
@csrf
<div class="form-group w-25 mx-auto">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control border-dark" id="exampleInputEmail1" name="email[0]"
placeholder="Enter email">
</div>
<div class="form-group w-25 mx-auto">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control border-dark" id="exampleInputEmail1" name="email[1]"
placeholder="Enter email">
</div>
<button type="submit" class="btn btn-primary mt-5 btn-block w-25 mx-auto">Submit</button>
</form>
کد قسمت بک اند:
public function store(Request $request)
{
User::create($request->all());
return redirect()->route('user.index')->with('message', 'Record was saved successfully');
}
این ارور زیر را گرفتم:
Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, object given, called in C:\Users\TORANJ\Desktop\Laravel\keivan\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 866
وقتی Request را داخل حلقه foreach قرار دادم باز هم ارور داد :
public function store(Request $request)
{
foreach ($request->all() as $req) {
User::create($req);
}
return redirect()->route('user.index')->with('message', 'Record was saved successfully');
}
ارورش به این صورت هست:
Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, string given, called in C:\Users\TORANJ\Desktop\Laravel\keivan\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php on line 23
سوال من اینه که input هایی که به صورت آرایه هستن اطلاعاتشون را به چه شکلی باید در دیتابیس insert کرد که ارورهای بالا را نگیریم؟
ممنون
با سلام خدمت شما همراه عزیز
لینک زیر بهتون کمک میکنه
https://stackoverflow.com/questions/51329267/how-to-store-array-in-laravel
دقت داشته باشید که همه ی ارایه ها باید پیمایش بشن و ارایه توو در توو نداشته باشید
از مرحله به مرحلش برای خودتون dd بگیرید تا مشکل حل بشه
ممنون از راهنماییتون
لینکی را که قرار دادید من قبلا" روشی که گفته بود را انجام داده بودم بازم همون ارور های بالا را می داد من یک روش دیگه ای انجام دادم که تا حدودی جواب داد ولی آخرش باز هم یک ارور می ده ولی اطلاعات را دیتابیس ذخیره می کنه
کد تابع store را من این صورت تغییر دادم:
public function store(Request $request)
{
$allrequests= $request->all();
for($i=0; $i<= count($allrequests); $i++) {
User::create([
'name'=>$allrequests['name'][$i],
'family'=>$allrequests['family'][$i],
'password'=>$allrequests['password'][$i],
'email'=>$allrequests['email'][$i],
]);
}
return redirect()->route('user.index')->with('message', 'Record was saved successfully');
}
}
با این روشی که استفاده کردم اطلاعات را در دو ردیف متفاوت ذخیره می کنه یعنی دو تا آیدی مختلف بهشون می ده آیا این شیوه ای که کد را نوشتم درسته؟ یعنی اگر چند فیلد داشته باشیم که name های مشابه داشته باشن با شماره های متفاوت مثلا"
family[0]
family[1]
در دیتابیس باید در یک ردیف با آیدی یکسان ذخیره بشن؟ یا در دو ردیف با آیدی های متفاوت؟ ( با روشی که بالا نوشتم با دو آیدی متفاوت ذخیره شدن)
ببخشید سوالها زیاد شد
ممنون برای وقتی که می گذارید
بستگی به نوع مثال داره
باید این مورد در مثال واقعی بررسی بشه
مثلا یک مثال میشه موقه اضافه کردن محصول به سبد خرید
که ایندکس ارایه میشه تعداد محصول مثلا
اینجوری باید در یک رکورد باشه و هر ایندکس برای یک ستون استفاده بشه
امکانش هست که یک قسمت آموزشی ضبط کنید و روش insert کردن داده های فرم به صورت آرایه را داخل دیتابیس توضیح بدید؟
مثلا" همون مثالی که توی آموزش http request زدید را این بار داخل دیتابیس insert کنید به هر دو روشی که فرمودید یعنی یک بار داده ها در یک رکود ذخیره بشن با آیدی یکسان و یک بار هم در رکودهای مختلف با آیدی های متفاوت و لطفا" کاربرد هر کدومشون در پروژه ها توضیح بدید
اگر این لطف را بکنید ممنونتون می شم
به احتمال زیاد در پروژه داریم این مورد رو اگر نبود و وقت شد اضافه میکنم
ممنون از شما
سلامت باشید