رتبه موضوع:
  • 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'));
 
 
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  نحوه ایجاد Token-Based Authentication(oauth2) در لاراول با استفاده از passport anonymox 0 33 11-12-2016, 06:27 AM
آخرین ارسال: anonymox
  جلوگیری از دسترسی کاربران به فولدرها و فایل های وبسایت amindeist 3 53 10-31-2016, 07:09 PM
آخرین ارسال: LavarelUser
  استفاده از دستورات در وب سرور cat_new1 1 62 09-20-2016, 08:47 AM
آخرین ارسال: hamo
  ارور در هنگام ارسال ایمیل BangShut 0 47 09-19-2016, 12:34 PM
آخرین ارسال: BangShut
  ارور در هنگام ایجاد sunfolder در قسمت Controllers ilbeygi 2 75 08-29-2016, 03:25 PM
آخرین ارسال: hamo
  اعتبار سنجی مدیر و کاربر هنگام لاگین کردن ilbeygi 0 87 08-22-2016, 02:11 PM
آخرین ارسال: ilbeygi
  استفاده از کامند های artisan وقتی سایت رو روی هاست اینترنتی اپلود کردیم چطوریه ؟ mehrdad201 4 216 07-19-2016, 12:24 PM
آخرین ارسال: amirhb
  مشکل در دسترسی به متد های یک کلاس توسط کلاس کنترلر alireza_msl 0 75 06-08-2016, 11:11 PM
آخرین ارسال: alireza_msl
Question دسترسی نداشتن به عکس کاربر abi128 0 59 05-05-2016, 12:40 PM
آخرین ارسال: abi128
  اجازه دسترسی nilufar 1 84 04-03-2016, 06:25 AM
آخرین ارسال: usef.enayati@yahoo.com

پرش به انجمن:


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

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

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