محمود موسى2 نشر 12 ديسمبر 2021 أرسل تقرير نشر 12 ديسمبر 2021 كما تعلمون انه عند استخدام yajra datatables يتم جلب جميع البيانات بشكل تلقائي SELECT(*) أنا فقط أريد جلب البيانات ضمن طريقة معينة.. كإستخدام where مثلا وليس كل البيانات. يعني أريد عمل شرط بناء عليه يتم جلب البيانات وعرضها بyajra datatables احدث اصدار الexpenses data table file <?php namespace App\DataTables; use App\Models\Admin\Expenses; use Yajra\DataTables\Html\Button; use Yajra\DataTables\Html\Column; use Yajra\DataTables\Html\Editor\Editor; use Yajra\DataTables\Html\Editor\Fields; use Yajra\DataTables\Services\DataTable; class ExpensesDataTable extends DataTable { private $monthData; public function setMonth ($month) { $this->monthData = $month; } /** * Build DataTable class. * * @param mixed $query Results from query() method. * @return \Yajra\DataTables\DataTableAbstract */ public function dataTable($query) { return datatables() ->eloquent($query) ->editColumn('student_id', function ($item) { return $item->student->name; }) ->editColumn('level_id', function ($item) { return $item->student->level->name_ar; }) ->editColumn('created_at', function ($item) { return date('Y-m-d H:i', strtotime($item->created_at)); }) ->editColumn('user_id', function ($item) { return $item->user->name; }) ->addColumn('action', function ($item) { if($item->trashed()){ $html = '<i title="حذف نهائياً" class="fas fa-trash text-danger"></i> <i title="إستعادة" class="fas fa-trash-restore text-success"></i>'; }else{ $html = '<i title="حذف" class="fas fa-trash text-danger"></i> <i class="cursor-pointer fas fa-print text-primary"></i>'; } return $html; }); } /** * Get query source of dataTable. * * @param \App\Models\Expense $model * @return \Illuminate\Database\Eloquent\Builder */ public function query(Expenses $model) { return $model->newQuery(); } /** * Optional method if you want to use html builder. * * @return \Yajra\DataTables\Html\Builder */ public function html() { return $this->builder() ->setTableId('expenses-table') ->columns($this->getColumns()) ->minifiedAjax() ->dom('Bfrtip') ->orderBy(1) ->lengthMenu([50]) ->language(['url' => route('dataTableTranslation')]) ->buttons( Button::make('excel'), Button::make('print'), ); } /** * Get columns. * * @return array */ protected function getColumns() { return [ Column::make('id')->title('#ID'), Column::make('student_id')->title('الطالب'), Column::make('level_id') ->searchable(false) ->title('المرحلة'), Column::make('month')->title('الشهر'), Column::make('money')->title('المبلغ'), Column::make('created_at')->title('تاريخ العملية'), Column::make('user_id')->title('المستلم'), Column::computed('action') ->title('خيارات') ->exportable(false) ->printable(false) ->searchable(false) ->width(60) ]; } /** * Get filename for export. * * @return string */ protected function filename() { return 'Expenses_' . date('YmdHis'); } } الcontroller public function index(Request $request, ExpensesDataTable $table) { if(!empty($request->month) && is_numeric($request->month)){ if($request->month > 12 || $request->month < 0){ abort(404); }else{ $table->setMonth($request->month); } }else{ $table->setMonth(date('m')); } return $table->render('admin.expenses.index'); } يعني أريد تمرير بيانات إلى الدالة setMonth الموجودة بداخل ملف الexpensesDataTable وبناء عليه أستخدم الmonth المُمرر في جلب بياناتي.. هل من حل؟ وشكرا 1 اقتباس
0 سمير عبود نشر 13 ديسمبر 2021 أرسل تقرير نشر 13 ديسمبر 2021 يُمكنك من خلال التابع eloquent تكوين الإستعلام الذي تُريد و تمريره له <?php public function dataTable($query) { $query = User::query()->where(function ($q) { if (request()->has('level')) { return $q->where('level', request('level')); } }); return datatables() ->eloquent($query) ... } أو يُمكنك القيام بذلك في الميثود query من صنف Datatable لأنه تم توفيرها لإنشاء و التحكم في الإستعلام كما تشاء: <?php public function query() { return User::query()->where(function ($q) { if (request()->has('level')) { return $q->where('level', request('level')); } }); } 1 اقتباس
السؤال
محمود موسى2
كما تعلمون انه عند استخدام yajra datatables يتم جلب جميع البيانات بشكل تلقائي
أنا فقط أريد جلب البيانات ضمن طريقة معينة.. كإستخدام where مثلا وليس كل البيانات.
يعني أريد عمل شرط بناء عليه يتم جلب البيانات وعرضها بyajra datatables احدث اصدار
الexpenses data table file
الcontroller
يعني أريد تمرير بيانات إلى الدالة setMonth الموجودة بداخل ملف الexpensesDataTable وبناء عليه أستخدم الmonth المُمرر في جلب بياناتي.. هل من حل؟
وشكرا
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.