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

روابط در لاراول

سلام دوستان.
من یه جدول دارم به نام jobs که کاربر آگهیشو ثبت میکنه و یه جدول دارم به نام job_galleries که کاربر عکس های مربوط به آگهی رو آپلود میکنه.
مدل Job:

public function gallery() {
    return $this->hasMany(JobGallery::class);
}

مدل JabGallery:

public function job() {
    return $this->belongsTo(Job::class);
}

حالا میخوام وقتی داخل گالری عکسی وجود نداره، قسمت اول if اجرا بشه و وقتی داخل گالری عکسی وجود داره قسمت دوم if اجرا بشه ولی در هر دو صورت فقط قسمت دوم اجرا میشه.

@if(! auth()->user()->job->gallery)
    <th>ایجاد گالری تصاویر</th>
@elseif(auth()->user()->job->gallery)
    <th>گالری تصاویر</th>
@endif

ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

حالا میخوام وقتی داخل گالری عکسی وجود نداره، قسمت اول if اجرا بشه و وقتی داخل گالری عکسی وجود داره قسمت دوم if اجرا بشه

کدی که شما نوشتید چک می‌کنه آیا از نظر منطقی یبن این دو مدل چنین relation ی وجود داره یا نه. فارغ از نتیجه و تعدادش. به همین خاطر یا باید با count تعدادش رو چک کنید که صفر نباشه یا از همه بهترخود Eloquent یک متد خیلی مشخص داره برای همین نیاز شما بنام exists :

$model->relation()->exists();

//در مثال شما میشه:
if (auth()->user()->job->gallery()->exists()) {
    //GalleryImage found.
}else {
    //No GalleryImage found!
}

ممدو
تخصص : در حال یادگیری ...
@mamado 3 سال پیش آپدیت شد
0

این کد رو امتحان کن ، و اینکه فکر نکنم نیاز به elseif داشته باشی !!

    @if(count(auth()->user()->job->gallery))

    <th>ایجاد گالری تصاویر</th>

    @else

    <th>گالری تصاویر</th>

    @endif

خیلی بهتره به جای gallery از جمع اون که میشه galleries استفاده کنی


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

حالا میخوام وقتی داخل گالری عکسی وجود نداره، قسمت اول if اجرا بشه و وقتی داخل گالری عکسی وجود داره قسمت دوم if اجرا بشه

کدی که شما نوشتید چک می‌کنه آیا از نظر منطقی یبن این دو مدل چنین relation ی وجود داره یا نه. فارغ از نتیجه و تعدادش. به همین خاطر یا باید با count تعدادش رو چک کنید که صفر نباشه یا از همه بهترخود Eloquent یک متد خیلی مشخص داره برای همین نیاز شما بنام exists :

$model->relation()->exists();

//در مثال شما میشه:
if (auth()->user()->job->gallery()->exists()) {
    //GalleryImage found.
}else {
    //No GalleryImage found!
}

Armin Rahmati
@arminrahmati999 3 سال پیش مطرح شد
0

@mamado
@mhyeganeh
تشکر از هر دو دوست عزیز.
با کسب اجازه از @mamado دوست عزیز، چون جواب آقای @mhyeganeh کامل تر هست من جواب ایشون رو به عنوان پاسخ برتر انتخاب میکنم.


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

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