با سلام و عرض ادب
تابع زیر قراره اطلاعات فرم رو ذخیره کنه ولی با خطای Array to string conversion مواجه میشم .
public function store(ArticleRequest $request) { $imagesUrl = $this->uploadImages($request->file('images')); auth()->user()->articles()->create(array_merge($request->all() , [ 'images' => $imagesUrl])); return redirect(route('articles.index')); }
تابعی که با استفاده از اون اطلاعات تصویر رو ذخیره میکنم هم به شرح زیر است :
اطلاعات مورد استفاده تصویر (اندازه ها و آدرس ها) به صورت آرایه بر گردونده میشه .. اونو چطور ذخیره کنم که خطای مورد نظر رو نداشته باشم ؟
protected function uploadImages($files) { $year = Carbon::now()->year; $month = Carbon::now()->month; $path = "/upload/images/{$year}/{$month}/"; $fileName = $files->getClientOriginalName(); $file = $files->move(public_path($path),$fileName); $sizes = ['300','600','900']; $url['images'] = $this->resize($sizes,$file,$path,$fileName); $url['thumb'] = $url['images'][$sizes[0]]; return $url; } private function resize($sizes,$file,$path,$fileName) { $images['org'] = $path.$fileName; foreach ($sizes as $size){ $images[$size] = $path."{$size}_".$fileName ; Image::make($file->getRealPath())->resize($size,null,function ($constraint) { $constraint->aspectRatio(); })->save(public_path($images[$size])); } return $images; }
طبق آموزش دوره فروشگاهی لاراول موجود در سایت جلو رفتم که البته در خود اموزش خطا نداشت .
ممنون
حل شد ؛ در لاراول راه حلش اینه :
داخل مودل مورد نظر بایستی تعریف بشه که اون فیلد از نوع ارایه می باشد .
protected $casts = ['images' => 'array'];
captan@ - الان منم همین مشکل رو دارم ولی الان از راهنماییتون چیزی متوجه نشدم. اون casts کجای پروژه است توی کد ها که نیست:(
@vahidyaghma1371
$cast هارو باید در model مربوطه اعمال کنید.
یعنی مثلا در مدل article به لاراول می فهمونید که این ستون از جدول من می تونه یک array رو ذخیره کنه
@ham.sarkhosh
الان من پروژم یک چیز دیگست و از سورس شما استفاده نمیکنم . و در پروژم cast ندارم . این cast که میگین یک اسم خاصه یا هر اسمی میتونه باشه؟
نگاه کنین این کد منه
public function store(Request $request) { $this->validate(request(),[ 'title' => 'required|max:250', 'type' => 'required', 'description' => 'required', 'image' => 'required|mimes:jpeg,png,bmp', 'path' => 'required|mimes:txt,doc,pdf', 'category_id' => 'required', 'price' => 'required', ]); $file = $request->file('image'); if ($request->hasFile('image')) { $imageUrl = $this->uploadImage($file); } $file1 = $request->file('path'); if ($request->hasFile('path')) { $sourceUrl = $this->uploadSource($file1); } $book = Book::create(array_merge($request->all(),['image' => $imageUrl],['path' => $sourceUrl])); $book->categories()->sync(request('category_id')); return redirect('admin/book/create'); }
مشکل این کجاست؟
اینا هم دو تا متد مورد نظر
private function uploadImage($file) { $imagePath = "\upload\images"; $filename = time().'.'. $file->getClientOriginalName(); $file = $file->move(public_path($imagePath),$filename); return $filename; } private function uploadSource($file1) { $sourcePath = "\upload\sources"; $filename1 = time().'.'.$file1->getClientOriginalName(); $file1 = $file1->move(public_path($sourcePath),$filename1); return $filename1; }
من توی مدلم این کد رو اضاف کردم ولی بازم مشکل همونه
protected $casts = [
'images' => 'array',
'path' => 'array'
];
سلام
منم همین مشکلو داشتم. با گذاشتن اون کد توی مدل درست شد اما حالا هربار که میخواد اطلاعات رو توی دیتابیس ذخیره کنه ، از هر درخواست دو تا توی دیتابیس میسازه .یعنی با هر بار ارسال اطلاعات به دیتابیس برای ذخیره دو تا رکورد ذخیره میشه. مشکل کجاست؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟