سلام خسته نباشید. من یه رابطه پلیمورفیک one to one بین جدول post ها و image دارم چون جداول دیگه ای هم دارم که از image استفاده میکنن
همچینن دارم با api کار میکنم و خروجی json دارم.
مشکلی که دارم تو آپلود کردن عکس هست .. وقتی یک پستی رو با استفاده از متد store در postcontroller میخوام ایجاد کنم و به وسیله ش عکس رو هم همونجا آپلود کنم.
با کدی که نوشتم عکس ذخیره میشه در دیتابیس اما فکر میکنم کدم غلط باشه چون نمیتونم دسترسی داشته باشم به عکس یه پست.
روابطم به صورت زیر هستش:
مدل پست:
public function image(){
return $this->morphOne(Image::class , 'imageable');
}
مدل image :
class Image extends Model
{
protected $fillable = [
'url'
];
public function imageable(){
return $this->morphTo();
}
}
store() in postController :
public function store(Request $request )
{
$post = new Post;
$post->category_id = $request->get('category_id');
$post->title = $request->get('title');
$post->body = $request->get('body');
$post->study_time = $request->get('study_time');
$post->tags = $request->get('tags');
// $post->user_id = JWTAuth::user()->id;
$post->user_id = $request->get('user_id');
$tags = explode(",", $request->tags);
$post->tag($tags);
$post->save();
$image = new Image;
$image->url=$request->file('url')->getClientOriginalName();
$fileName = $image.'_'.time();
$image->url=$request->file('url')->move(public_path('images/posts'), $fileName);
$image->imageable_type = Post::class;
$image->imageable_id = $post->id;
$post->image()->save($image);
return response()->json($post , 201);
}
حقیقت من قسمت
$post->save();
رو بعد از
$post->image()->save($image);
قرار داده بودم اما سیو نمیشد و ارور های مختلف میداد مثل none object و imageable_id null
برای همین گفتم اول پست رو سیو کنم بعد آی دیش رو بشناسه عکسی که میخواد آپلود شه
باز ممنون میشم بهم بگین مشکل کارم کجاست
با سلام خدمت شما همراه عزیز
الان مشکل کارتون کجاست؟ عکس و رابطه ها توی دیتایس ذخیره میشن؟ ای دی ها درست ذخیره میشه؟