راکت
حل شده

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

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

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

ثبت پرسش جدید

پاسخ‌ها

3
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

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

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

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

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

تخصص: در حال یادگیری ...

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

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

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

    @else

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

    @endif

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

Armin Rahmati
Armin Rahmati
@arminrahmati999

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

شاید پاسخ شما همین‌جا باشد

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

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