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


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل افت سرعت وقتی از لاراول به جای php استفاده می کنم Zahir 1 111 08-31-2017, 08:40 AM
آخرین ارسال: imanghafoori
  سوال در استفاده از captcha habibi313 1 237 06-16-2017, 02:01 PM
آخرین ارسال: ibulud.com
  مشکل در استفاده از Session Mr.AMiR 2 62 05-02-2017, 01:45 PM
آخرین ارسال: Mr.AMiR
  ساخت authentication شخصی یا استفاده از authentication لاراول meysam_biz 0 148 03-19-2017, 05:38 PM
آخرین ارسال: meysam_biz
  کسی قبلا از پکیج‌های Passport و Socialite استفاده کرده؟ bahbah 0 142 03-11-2017, 10:20 PM
آخرین ارسال: bahbah
  درخواست راهنمایی : تعریف سطوح دسترسی کاربری در لاراول Bvk.Programmer 11 1,354 02-16-2017, 10:09 PM
آخرین ارسال: ansar
  استفاده از laravel بجای angular alireza 0 120 12-27-2016, 07:57 AM
آخرین ارسال: alireza
  نحوه ایجاد Token-Based Authentication(oauth2) در لاراول با استفاده از passport anonymox 0 286 11-12-2016, 06:27 AM
آخرین ارسال: anonymox
  جلوگیری از دسترسی کاربران به فولدرها و فایل های وبسایت amindeist 3 164 10-31-2016, 07:09 PM
آخرین ارسال: LavarelUser
  استفاده از دستورات در وب سرور cat_new1 1 124 09-20-2016, 08:47 AM
آخرین ارسال: hamo

پرش به انجمن:


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

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

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