تالار گفتمان nCIS.ir

نسخه‌ی کامل: انتخاب فیلدها در کوئری؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
  $personnel_info = DB::table('assigns AS a')
            ->join('boxes AS b','b.id','=', 'a.box_id')
           ->join('positions AS p','p.id','=', 'b.position_id')
           ->select('a.id','b.id AS box_id','p.id as position_id','p.title','a.status','a.end_date')
           ->where('a.personnel_id','=',$personnel_id)
           ->get();
اینا هم روابط این جدول هستند
    class Boxes extends Model
{
   public function position()
   {
       return $this->belongsTo('Positions');
   }

   public function assign()
   {
       return $this->hasOne('Assigns', 'box_id');
   }
}


چطور میتونم با استفاده از دستورات Eloquent مثل with همچین کوئری رو بسازم که دقیقا فقط همون فیلدهای انتخابی من رو بیاره؟
بدون اینکه توی مدل Boxes بیام فیلدهای بازگشتی از جداول assign , position رو مشخص کنم(چون هارد کد میشه)
ممنون
سلام. همه متدهای query builder داخل eloquent هم قابل دسترسی هستند مثلا
$users = User::join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

همینطور توی روابط هم میتونید متد select رو استفاده کنید

$users = User::with(['posts' => function ($query) {
	$query->select('id', 'title');
}])->select('id', 'name')->get();
اون select داخل closure واسه ستون های جدول رابطه و select بیرونی هم واسه خود جدول اصلی که تو مثال بالا users هست