界面
代码
<?php
namespace App\Admin\Controllers\Sakila;
use App\Models\Sakila\Payment;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Form;
use App\Http\Controllers\Controller;
class PaymentController extends Controller
{
...
protected function grid()
{
return Admin::grid(Payment::class, function (Grid $grid) {
$grid->id('ID')->sortable();
$grid->customer()->value(function ($customer) {
return "{$customer['first_name']} {$customer['last_name']}";
});
$grid->staff()->value(function ($staff) {
return "{$staff['first_name']} {$staff['last_name']}";
});
$grid->rental_id();
$grid->amount()->value(function ($amount) {
return "\$$amount";
})->badge('green');
$grid->payment_date();
// $grid->created_at();
// $grid->updated_at();
});
}
protected function form()
{
return Admin::form(Payment::class, function (Form $form) {
$form->display('id', 'ID');
$form->select('customer_id')->options(function ($id) {
$customer = Customer::find($id);
if ($customer) {
return [$customer->id => "$customer->first_name $customer->last_name"];
}
})->ajax('/admin/api/sakila/customers');
$form->select('staff_id')->options(function ($id) {
$staff = Staff::find($id);
if ($staff) {
return [$staff->id => "$staff->first_name $staff->last_name"];
}
})->ajax('/admin/api/sakila/staffs');
$form->number('rental_id');
$form->currency('amount');
$form->date('payment_date');
$form->display('created_at', 'Created At');
$form->display('updated_at', 'Updated At');
});
}
// GET /admin/api/sakila/customers?q=XX
public function customers(Request $request)
{
$q = $request->get('q');
return Customer::where('first_name', 'like', "%$q%")->paginate(null, ['id',DB::raw('concat(first_name, " ", last_name) as text')]);
}
// GET /admin/api/sakila/staffs?q=XX
public function staffs(Request $request)
{
$q = $request->get('q');
return Staff::where('first_name', 'like', "%$q%")->paginate(null, ['id',DB::raw('concat(first_name, " ", last_name) as text')]);
}
...
}
模型
表结构
-END-