رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دسترسی به رکوردهای خاص در هنگام استفاده از جدول pivot
#1
سلام،

من دو تا جدول دارم. فرض کنید یکیش جدول posts هست و یکی دیگه هم جدول tags. رابطه این دو جدول چند به چند هست، پس از یه جدول pivot و متد belongsToMany برای ارتباط دادن بینشون استفاده شده. حالا فرض کنید که تو جدول posts یه فیلد بولین داریم که وضعیت منتشر شدن یا منتشر نشدن پست رو مشخص میکنه. خب؟

حالا یا این اوصاف من نمی‌دونم چطور میشه پست‌های منتشر شده رو بر اساس هر تگ لیست کرد. متأسفانه لیست تمام پست‌های مربوط به اون تگ، چه منتشر شده و چه منتشر نشده فچ میشه. به این صورت که این دستور مربوط به فایل route.php هست:
کد پی‌اچ‌پی:
Route::get('tags/{tags}''TagsController@show'); 

و این هم متد show در کنتلر post:
کد پی‌اچ‌پی:
 public function show($tag) {
 
   $posts $tag->posts;
 
   return view('tags.posts'compact('posts'));
 
 

همونطور که می‌بیند تمام پست‌های یک تگ فچ میشه. البته من برای مدل posts یه متد دارم که میتونه فقط پست‌های منتشر شده رو فچ کنه ولی اینجا نمیشه ازش استفاده کرد.


آیا در این مورد توی لاراول۵ راه حلی هست یا اینکه باید خودم کوئری بنویسم واسش؟
پاسخ
#2
کد پی‌اچ‌پی:
$posts $tag->posts->where('published''='true)->get(); 
پاسخ
#3
(08-17-2015, 06:55 PM)arashmanteghi نوشته:  سلام،

من دو تا جدول دارم. فرض کنید یکیش جدول posts هست و یکی دیگه هم جدول tags. رابطه این دو جدول چند به چند هست، پس از یه جدول pivot و متد belongsToMany برای ارتباط دادن بینشون استفاده شده. حالا فرض کنید که تو جدول posts یه فیلد بولین داریم که وضعیت منتشر شدن یا منتشر نشدن پست رو مشخص میکنه. خب؟

حالا یا این اوصاف من نمی‌دونم چطور میشه پست‌های منتشر شده رو بر اساس هر تگ لیست کرد. متأسفانه لیست تمام پست‌های مربوط به اون تگ، چه منتشر شده و چه منتشر نشده فچ میشه. به این صورت که این دستور مربوط به فایل route.php هست:




کد پی‌اچ‌پی:
Route::get('tags/{tags}''TagsController@show'); 

و این هم متد show در کنتلر post:




کد پی‌اچ‌پی:
 public function show($tag) {
 
   $posts $tag->posts;
 
   return view('tags.posts'compact('posts'));
 
 

همونطور که می‌بیند تمام پست‌های یک تگ فچ میشه. البته من برای مدل posts یه متد دارم که میتونه فقط پست‌های منتشر شده رو فچ کنه ولی اینجا نمیشه ازش استفاده کرد.


آیا در این مورد توی لاراول۵ راه حلی هست یا اینکه باید خودم کوئری بنویسم واسش؟




خب حل شد. اون متد که برای مدل posts نوشته بودم قابل استفاده هست به این صورت:
کد پی‌اچ‌پی:
 public function show($tag) {
 
   $posts $tag->posts()->published()->get();
 
   return view('tags.posts'compact('posts'));
 
 
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ساخت authentication شخصی یا استفاده از authentication لاراول meysam_biz 0 14 03-19-2017, 05:38 PM
آخرین ارسال: meysam_biz
  کسی قبلا از پکیج‌های Passport و Socialite استفاده کرده؟ bahbah 0 85 03-11-2017, 10:20 PM
آخرین ارسال: bahbah
  درخواست راهنمایی : تعریف سطوح دسترسی کاربری در لاراول Bvk.Programmer 11 887 02-16-2017, 10:09 PM
آخرین ارسال: ansar
  استفاده از laravel بجای angular alireza 0 57 12-27-2016, 07:57 AM
آخرین ارسال: alireza
  نحوه ایجاد Token-Based Authentication(oauth2) در لاراول با استفاده از passport anonymox 0 116 11-12-2016, 06:27 AM
آخرین ارسال: anonymox
  جلوگیری از دسترسی کاربران به فولدرها و فایل های وبسایت amindeist 3 108 10-31-2016, 07:09 PM
آخرین ارسال: LavarelUser
  استفاده از دستورات در وب سرور cat_new1 1 88 09-20-2016, 08:47 AM
آخرین ارسال: hamo
  ارور در هنگام ارسال ایمیل BangShut 0 73 09-19-2016, 12:34 PM
آخرین ارسال: BangShut
  ارور در هنگام ایجاد sunfolder در قسمت Controllers ilbeygi 2 104 08-29-2016, 03:25 PM
آخرین ارسال: hamo
  اعتبار سنجی مدیر و کاربر هنگام لاگین کردن ilbeygi 0 121 08-22-2016, 02:11 PM
آخرین ارسال: ilbeygi

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

درباره انجمن فریم ورک لاراول

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.