محمد
3 سال پیش توسط محمد مطرح شد
2 پاسخ

کوئری لاراول

سلام
من دو تا table دارم به نام های team که اعضای تیم رو در سایت نشون میده و social media که شبکه های اجتماعی این اعضارو نشون میده .

        Schema::create('teams', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('title');
            $table->text('about');
            $table->string('image');

            $table->timestamps();
        });

       Schema::create('social_media', function (Blueprint $table) {
            $table->id();
            $table->string('facebook_link');
            $table->string('twitter_link');
            $table->string('instagram_link');
            $table->string('linkedin_link');
            $table->unsignedBigInteger('team_id');
            $table->foreign('team_id')->references('id')->on('teams')->onDelete('cascade');
            $table->timestamps();
        });

و بین این ها رابطه رو درست کردم . و عملیات crud رو روی team هم انجام دادم

class Team extends Model
{
    use HasFactory;

    protected $fillable = ['name' , 'title' , 'about' , 'image'];

    public function socialmedia()
    {
        return $this->hasMany(SocialMedia::class);
    }
}

class SocialMedia extends Model
{
    use HasFactory;

    protected $fillable = ['facebook_link' , 'twitter_link' , 'instagram_link' , 'linkedin_link'];

    public function team()
    {
        return $this->belongsTo(Team::class);
    }
}

حالا می خوام در یک صفحه ایجاد socialmedia در تگ select option اعضای تیم که قبلا شبکه اجتماعی ثبت نکردن رو نشون بدم .

کنتلر socialmedia متد create

    public function create()
    {
        $mrn=DB::table('teams')->join('social_media' , 'teams.id' , '!='  , 'social_media.team_id'  )->get();
        return view('admin.pages.SocialMedia.create' , compact('mrn'));
    }

و این هم ویو ایجاد socialmedia

       <form action="{{ route('socialmedia.create' ) }}" method="post" >
            @csrf

            <div class="form-group">
                <label for="" class="label">کاربر</label>
                <select name="user " id="">
                    @foreach($mrn as $team)
                        <option value="{{ $team->id }}" >{{ $team->name }}</option>
                    @endforeach
                    <option value=""></option>
                </select>
            </div>

چنتا team هم ساختم ولی تو قسمت select هیچی نمیاره
توضیح تصویر رو وارد کنید
مشکل از این قسمته نمیدونم join مشکل داره یا نه

        $mrn=DB::table('teams')->join('social_media' , 'teams.id' , '!='  , 'social_media.team_id'  )->get();

ثبت پرسش جدید
محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
3

سلام
خیلی ممنونم @muhammad با این کوئری مشکلم حل شد

        $mrn=DB::table('teams')->leftjoin('social_media' , 'teams.id' , '='  , 'social_media.team_id'  )->orWhereNull('social_media.team_id')->get(['teams.id' , 'teams.name']);

Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش مطرح شد
0

سلام نمی‌دونم سوالتون رو درست فهمیدم یا نه، ولی این رو امتحان کنین:

Team::whereDoesntHave('socialmedia')->get();

محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
3

سلام
خیلی ممنونم @muhammad با این کوئری مشکلم حل شد

        $mrn=DB::table('teams')->leftjoin('social_media' , 'teams.id' , '='  , 'social_media.team_id'  )->orWhereNull('social_media.team_id')->get(['teams.id' , 'teams.name']);

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام