model
class Order extends Illuminate\Database\Eloquent\Model{
const REFUND_STATUS_PENDING = 'pending';
const REFUND_STATUS_APPLIED = 'applied';
const REFUND_STATUS_PROCESSING = 'processing';
const REFUND_STATUS_SUCCESS = 'success';
const REFUND_STATUS_FAILED = 'failed';
const SHIP_STATUS_PENDING = 'pending';
const SHIP_STATUS_DELIVERED = 'delivered';
const SHIP_STATUS_RECEIVED = 'received';
public static $refundStatusMap = [
self::REFUND_STATUS_PENDING => '未退款',
self::REFUND_STATUS_APPLIED => '已申请退款',
self::REFUND_STATUS_PROCESSING => '退款中',
self::REFUND_STATUS_SUCCESS => '退款成功',
self::REFUND_STATUS_FAILED => '退款失败',
];
public static $shipStatusMap = [
self::SHIP_STATUS_PENDING => '未发货',
self::SHIP_STATUS_DELIVERED => '已发货',
self::SHIP_STATUS_RECEIVED => '已收货',
];
protected $fillable = [
'no',
'address',
'total_amount',
'remark',
'paid_at',
'payment_method',
'payment_no',
'refund_status',
'refund_no',
'closed',
'reviewed',
'ship_status',
'ship_data',
'extra',
];
//数据类型转换
protected $casts = [
'closed' => 'boolean',
'reviewed' => 'boolean',
'address' => 'json',
'ship_data' => 'json',
'extra' => 'json',
];
protected $dates = [
'paid_at',
];
protected static function boot()
{
parent::boot();
// 监听模型创建事件,在写入数据库之前触发
static::creating(function ($model) {
// 如果模型的 no 字段为空
if (!$model->no) {
// 调用 findAvailableNo 生成订单流水号
$model->no = static::findAvailableNo();
// 如果生成失败,则终止创建订单
if (!$model->no) {
return false;
}
}
});
/** 新增纪录生成雪花ID并校验规则 */
self::creating(function ($model) {
$model->global_id = Snowflake::generateId();
Validator::make($model->toArray(),self::$rules)->validate();
});
/** 新增纪录生成雪花ID或更新,并校验规则 */
self::saving(function ($model) {
if (! $model->global_id) {
$model->global_id = Snowflake::generateId();
}
Validator::make($model->toArray(),self::$rules)->validate();
});
/** 更新记录,并校验规则 */
self::updating(function ($model) {
Validator::make($model->toArray(),self::$rules)->validate();
});
}
public function user()
{
return $this->belongsTo(User::class);
}
public function items()
{
return $this->hasMany(OrderItem::class);
}
public function couponCode()
{
return $this->belongsTo(CouponCode::class);
}
}model关联模型
//关联模型
public function bgLongsToLevel(){
return $this->belongsTo("App\Http\Models\Level","level","id");
}控制器类
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Models\Nav;
use App\Http\Models\Manage;
use App\Http\Requests;
use App\Http\Models\Article;
use App\Org\Tools;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\HttpFoundation\Request;
class ArticleController extends CommonController{
public function index(){
$list=Article::orderby("sort","desc")->paginate(config("webset.paginate"));
return view("admin.article.index",compact("list"));
}
//添加 /admin/manage/create
public function create(){
$isfou=[1=>trans("admin.shi"),'0'=>trans("admin.fou")];
$nav=Tools::navList(Nav::orderby("sort","asc")->where("mshow","=",1)->get());
$attr_list=[1=>"推荐"];
//得到管理员列表 默认显示自己
$manageList=Manage::where("islogin","=",1)->get()->lists("username","id")->toArray();
return view("admin.article.create",compact("isfou","nav","attr_list","manageList"));
}
//添加post admin/manage
public function store(Request $request){
$input=$request->except("_token");
if(isset($input['attr'])&&sizeof($input['attr'])){
$input['attr']=implode(",",$input['attr']);
}else{
$input['attr']="";
}
//进行validata的验证,保存数据返回
$rules=[
"title"=>'required',
"nav"=>"required",
"content"=>"required"
];
$message=[
"title.required"=>"标题不能为空",
"nav.required"=>"请选择对应的栏目",
"content.required"=>"内容不能为空"
];
$validator=Validator::make($input,$rules,$message);
if($validator->passes()){
$input=Article::checkData($input,Article::getFiledList());
$res=Article::create($input);
if($res){
$_data=[
"waitTimes"=>2,
"info"=>trans("public.success"),
"forwardurl"=>url("admin/article")
];
return view("admin.success")->with("data",$_data);
}else{
$request->flash();
return back()->withInput();
}
}else{
$request->flash();
return back()->withErrors($validator)->withInput();
}
}
//edit get/patch
public function edit($id){
$data=Article::find($id);
$prevPage=Tools::getPrevPage();
$list=[1=>trans("admin.shi"),'0'=>trans("admin.fou")];
$level=Level::orderby("id","asc")->lists("title","id");
return view("admin.article.edit",compact("data","prevPage","list","level"));
}
//修改
public function update(Request $request){
$input=$request->except("_token");
if(isset($input['attr'])&&sizeof($input['attr'])){
$input['attr']=implode(",",$input['attr']);
}else{
$input['attr']="";
}
$rules=[
"title"=>'required',
"nav"=>"required",
"content"=>"required"
];
$message=[
"title.required"=>"标题不能为空",
"nav.required"=>"请选择对应的栏目",
"content.required"=>"内容不能为空"
];
$validator=Validator::make($input,$rules,$message);
if($validator->passes()){
$input=Article::checkData($input,Article::getFiledList());
$res=Article::where("id","=",$input['id'])->update($input);
if($res){
$_data=[
"waitTimes"=>2,
"info"=>trans("public.success"),
"forwardurl"=>url("admin/manage")
];
return view("admin.success")->with("data",$_data);
}else{
return back()->withErrors($validator);
}
}else{
return back()->withErrors($validator);
}
}
//搜索
public function k($tit=""){
$list=DB::table("article")->select(["id","title"])->where('title', 'like', '%'.$tit.'%')->get();
if(sizeof($list)>0){
echo json_encode($list);
}
}
//删除 DELETE admin/manage/{manage}
public function destroy($id){
$res=Article::destroy($id);
if($res){
echo json_encode(['status'=>1,"info"=>trans("public.del_success")]);
}else{
echo json_encode(['status'=>0,"info"=>trans("public.failure")]);
}
}
//排序
public function sort(Request $request){
$result=Article::where("id","=",$request->get("id"))->update(['sort'=>$request->get("sort")]);
echo $result?json_encode(["status"=>1,"info"=>trans("admin.sort_success")]):json_encode(["status"=>0,"info"=>trans("admin.sort_failure")]);
}
//批量删除
public function pldel(Request $request){
if($request->get("ids")){
$ids=explode(",",$request->get("ids"));
$res=Article::destroy($ids);
if($res){
echo json_encode(['status'=>1,"info"=>trans("admin.del_pl_success")]);
}else{
echo json_encode(['status'=>0,"info"=>trans("public.failure")]);
}
}
}
}带有验证规则控制器增加方法
public function register(){
$this->validate(request(),[
'namme'=>'required|min:3|unique:users,name',
'email'=>'required|unique:users,email|email',
'password'=>'required|min:5|max:10|confirmed'
]);
$name=request('name');
$email=request('email');
$password=reqeust('password');
$user=User::create(compact('name','email','password'));
return view('/login');
}方法片段2
public function settingStore(){
$this->validate(request(),[
'namme'=>'required|min:3|unique:users,name'
]);
$name=request('name');
if(User::where('name',$name)->count()>0){
return back()->withErrors('用户已经存在,不能重复注册');
}
....
}