با سلام و عرض ادب
تابع زیر قراره اطلاعات فرم رو ذخیره کنه ولی با خطای 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'
];
سلام
منم همین مشکلو داشتم. با گذاشتن اون کد توی مدل درست شد اما حالا هربار که میخواد اطلاعات رو توی دیتابیس ذخیره کنه ، از هر درخواست دو تا توی دیتابیس میسازه .یعنی با هر بار ارسال اطلاعات به دیتابیس برای ذخیره دو تا رکورد ذخیره میشه. مشکل کجاست؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟