سوال بپرسید
0

ذخیره داده در روابط یک به چند در لاراول

سوال بپرسید

سلام ببخشید من دوتا جدول دارم یکی charity و دیگری photos، هر خیریه ای چنتا عکس داره و هر عکسی هم مربوط به یک خیریه است در نتیجه یک به چند میشه رابطه بینشون حالا من نمی دونم چجوری باید چندتا مقدار رو در ستون photo_id در جدول خیریه ها ذخیره کنم ممنون میشم یه نفر جواب بده کد ها به شکل زیرن:

migrations:

public function up()
    {
        Schema::create('charities', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('owner');
            $table->integer('members');
            $table->text('description');
            $table->double('amountRaised')->nullable();
            $table->string('email')->unique();
            $table->string('address');
            $table->string('phone');
            $table->string('slug');
            $table->text('meta_desc');
            $table->text('meta_key');
            $table->text('meta_title');

            $table->unsignedBigInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');

            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

            $table->unsignedBigInteger('photo_id');
            $table->foreign('photo_id')->references('id')->on('photos')->onDelete('cascade');
            $table->timestamps();
        });
    }
 Schema::create('photos', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('path');
            $table->string('original_name');

            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
        });

 models:

class Charity extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    public function category()
    {
        return $this->belongsTo(Category::class);
    }

    public function photos()
    {
        return $this->hasMany(Photo::class);
    }
}

 

class Photo extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    public function charity()
    {
        return $this->belongsTo(Charity::class);
    }
}

 

controller:

public function store(Request $request)
    {

        $charity = new Charity();
        $charity->name = $request->input('name');
        $charity->owner = $request->input('owner');
        $charity->members = $request->input('members');
        $charity->description = $request->input('description');
        $charity->email = $request->input('email');
        $charity->address = $request->input('address');
        $charity->phone = $request->input('phone');
        $charity->account_number = $request->input('account_number');

        if ($request->input('slug')){
            $charity->slug = make_slug(($request->input('slug')));
        }
        else{
            $charity->slug = make_slug(($request->input('name')));
        }
        $charity->meta_title = $request->input('meta_title');
        $charity->meta_desc = $request->input('meta_desc');
        $charity->meta_key = $request->input('meta_key');
        $charity->category_id = $request->input('category');
        $charity->user_id = Auth::id();
        $charity->photo_id = $request->input('photo_id')[0];
        $charity->save();
        Session::flash('success', 'خیریه مورد نظر با موفقیت ویرایش گردید.');
        return   redirect(route('charities.index'));
    }

 

برچسب ها:
گزارش سوال
پرسیده شده در
آمار بازدید: 462
mghi90 (1)
بیش از ۱ سال عضویت در روکسو

1 پاسخ

0

سلام

زمانیکه رابطه بین دو جدول  charity و  photos  از نوع یک به چند باشد، شما باید در جدول photos  فیلدی بنام charity_id اضافه کنید تا مشخص شود هر تصویری به کدام خیریه تعلق دارد.(قرار دادن ستون photo_id در جدول charity اشتباه است). حال می توانید پس از انتخاب تصویر مورد نظر برای یک خیریه خاص مقدار فیلد charity_id رکورد مربوطه را بروز رسانی نمایید.