Laravel中EloquentORM相关操作定义操作获取(查询)获取集合,(查询列表)返回值是IlluminateDatabaseEloquentCollection的实例获取所有数据使用App\用户;$用户=用户::所有();条件访问列表$users=User::where('active',1)->orderBy('name','desc')->take(10)->get();获取数据列值$result=User::where('gender','1')->pluck('name');//returns['name1','name2']//自定义键必须是表的其他字段列名,否则会报错$result=User::where('gender','1')->pluck('email','name');//return{"name1":"ed9@qq.com","name2":"ed89@qq.com"}获取单个模型,(查询单个data)//通过主键获取model$user=User::find(1);//获取第一个符合查询条件的Amodel...$user=User::where('active',1)->first();//返回第一个性别为1的用户的名字$name=User::where('gender','1')->value('name');//传给调用find方法的主键数组,会返回匹配的记录集合:$users=App\Flight::find([1,2,3]);如果没有查询结果,会抛出IlluminateDatabaseEloquentModelNotFoundException:$model=App\Flight::findOrFail(1);$model=App\Flight::where('legs','>',100)->firstOrFail();处理结果集$re结果=User::where('gender','1')->chunk(5,function($users){foreach($usersas$user){$name=$user->name;echo$name;}})//输出名称//结果是布尔值$result=User::where('gender','1')->chunk(5,function($users){foreach($usersas$user){$name=$user->name;if($name=="dxx5"){echo$name;returnfalse;}}})//找一个名字聚合方法//得到总数$count=Flight::where('active',1)->count();//取最大值$max=Flight::where('active',1)->max('price');//平均$max=Flight::where('活跃',1)->avg('价格');条件查询selectquery//查询姓名和邮箱$users=User::select('name','emailasuser_email')->get();//return[{"name":"name1","user_email":"1@qq.com"}]//querybuilder实例,在已有的select子句中增加查询列$user=User::select('姓名');$users=$user->addSelect('性别')->get();联合$first=数据库::table('users')->whereNull('first_name');$users=DB::table('users')->whereNull('last_name')->union($first)->get();注意:unionAll方法也是有效的,和unionWhere子句的用法一样$users=User::where('gender','=',1)->get();//男性用户$users=User::where('gender',1)->get();//同上$users=User::where('age','>=',10)->get();//10岁以上的用户$users=User::where('age','<>',10)->get();//未满10岁的用户$users=User::where('name','like','d%')->get();//名称以d开头的用户$users=User::where('name','like','%d%')->get();//名称中包含dUsers的用户//将条件数组传递给where函数:$users=User::where([['gender','=','1'],['age','>','10']])->get();//10岁以上的男孩//或声明$users=User::where('gender','=',1)->orWhere('age','>','10')->get();otherwhere语句//whereBetween方法验证列值是否在给定值之间:$users=User::whereBetween('age',[1,7])->get();//1-7岁的用户//whereNotBetween方法验证列值不在给定值之间:$users=User::whereNotBetween('age',[1,7])->获取();//1-7岁以外的用户//whereIn方法验证给定列的值是否在给定数组中:$users=User::whereIn('id',[1,2,3])->get();//whereNotIn方法验证给定列的值不在给定数组中:$users=User::whereNotIn('id',[1,2,3])->get();//whereNull方法验证给定列的值为NULL:$users=User::whereNull('updated_at')->get();//whereNotNull方法验证给定列的值不为NULL:$users=User::whereNotNull('updated_at')->get();//whereDate方法用于比较字段值和日期:$users=User::whereDate('created_at','2018-05-10')->得到();//20180510注册用户//whereMonth方法用于将字段值与指定月份进行比较:$users=User::whereMonth('created_at','10')->get();//whereDay的方法用于将字段值与一月的指定日期进行比较:$users=User::whereDay('created_at','10')->get();whereYear方法用于比较字段值与指定年份:$users=User::whereYear('created_at','2016')->get();//whereColumn方法用于验证两个字段是否相等,或者可以将比较运算符传递给此方法:$users=User::whereColumn('first_name','last_name')->get();$users=User::whereColumn('updated_at','>','created_at')->get();//您也可以将多条件数组传递给whereColumn方法,这些条件由and运算符连接:$users=User::whereColumn([['first_name','=','last_name'],['updated_at','>','created_at']])->get();参数组$users=User::where('name','=','xxx')->orWhere(function($query){$query->where('age','>',5)->where('性别',1);})->get();//xxx岁或大于5岁的男孩whereexit$users=User::whereExists(function($query){$query->select(DB::raw(1))->from('articles')->whereRaw('articles.user_id=users.id');})->get();//写过文章的用户顺序$users=User::orderBy('age','desc')->get();//年龄倒序$user=User::latest()->first();//最新的crate_at$user=User::oldest()->first();//crate_attheearliest$users=User::inRandomOrder()->first();//随机用户限制$users=User::skip(2)->take(3)->get();//skip在前2个之后取中间的3个$users=User::offset(2)->limit(3)->get();//同样用于分组$users=User::groupBy('名字')->having('年龄','>',10)->get();//Usersgreaterthan10//找出所有价格大于$2,500的零件,我不明白$users=User::select('department',DB::raw('SUM(price)astotal_sales'))->groupBy('department')->havingRaw('SUM(price)>2500')->get();when条件子句$sortBy=null;//当sortBy为null时,默认名称排序$users=User::when($sortBy,function($query)use($sortBy){return$query->orderBy($sortBy);},function($query){return$query->orderBy('name');})->get();分页$users=User::paginate(3);$users->appends(['sort'=>'name'])->links();//修改的是连接$users->withPath('custom/url');//Constraints$users=User::where('id','>',2)->paginate(2);$users=User::where('id','>',2)->simplePaginate(2);返回$users->toArray();返回结果:当调用paginate方法时,会得到一个IlluminatePaginationLengthAwarePaginator实例,调用simplePaginate方法时,会得到一个IlluminatePaginationPaginator实例(不需要知道结果集中的数据项总数){"current_page":1"data":[{"id":1,"name":"name1"},{"id":2,“名称”:“name2”}]“来自”:1“last_page”:2“next_page_url”:“http://localhost:8888/user/page?page=2”“路径”:“http://localhost:8888/user/page""per_page":3"prev_page_url":null"to":3"total":6}每个pager实例可以通过以下方法提供更多的分页信息:$results->count()$results->currentPage()$results->firstItem()$results->hasMorePages()$results->lastItem()$results->lastPage()(使用simplePaginate时无效)$results->nextPageUrl()$results->perPage()$results->previousPageUrl()$results->total()(使用simplePaginate时无效)$results->url($page)InsertInsert$user=newUser;$user->name="username";$user->fill(['grade'=>'2']);//使用填充方法填充$user->save();$row=array('name'=>str_random(3),'email'=>str_random(3).'@qq.com')$user=User::create($row);//返回模型对象$id=User::insertGetId($row);//插入记录和返回ID$success=User::nsert([['email'=>'taylor@example.com','votes'=>0],['email'=>'dayle@example.com','votes'=>0]]);//插入多个更新单个更新$user=User::find(1);$user->name='newname';$user->save();批量更新User::where('gender',1)->update(['age'=>1]);自增自减$result=User::increment('age');//返回修改的行数$result=User::increment('age',2);$result=User::decrement('age');$result=User::decrement('age',2);$result=User::increment('age',1,['gender'=>1]);//agesinceIncrement1andchangegenderto1其他创建方法$user=User::firstOrCreate(['name'=>'Flight10']);//如果不存在则创建$user=User::firstOrNew(['name'=>'Flight10']);//如果不存在则初始化一个新实例$user=User::updateOrCreate(['name'=>'username','age'=>'16'],['grade'=>3]);//将16岁的用户名改成三年级,如果不是,创建并删除$user=User::find(1);$user->delete();//通过主键查询后,删除模型User::destroy(1);//通过主键直接删除User::destroy([1,2,3]);User::destroy(1,2,3);$deletedRows=User::where('age',0)->删除();//查询删除//注意:通过Eloquent批量删除时,删除和deleted事件不会被触发,因为删除模型时不会检索模型。当模型被软删除时,它们实际上并没有从数据库中删除。相反,在模型上设置了一个deleted_at属性并将其插入到数据库中。如果模型具有非空的deleted_at值,则该模型已被软删除。要在模型上启用软删除,请在模型上使用IlluminateDatabaseEloquentSoftDeletes特征并将deleted_at列添加到$dates属性:softDeletes();});现在,当调用模型的delete方法时,deleted_at列将设置为当前日期和时间。当查询一个删除模型时,软删除的模型会自动从查询结果中排除。软删除查询判断给定的模型实例是否被软删除,可以使用trashed方法:if($flight->trashed()){//}//如果希望软删除模型出现在查询结果,可以使用withTrashed方法:$flights=App\Flight::withTrashed()->where('account_id',1)->get();//withTrashed方法也可以用在关系查询中:$flight->history()->withTrashed()->get();//onlyTrashed方法只获取软删除模型:$flights=App\Flight::onlyTrashed()->where('airline_id',1)->get();//恢复软删除模型,使用恢复方法:$flight->restore();//快速恢复多个模型,同样,这不会触发任何模型事件:App\Flight::withTrashed()->where('airline_id',1)->恢复();//也可以用于关联查询:$flight->history()->restore();//要永久删除一个模型,可以使用forceDelete方法:$flight->forceDelete();//强制删除单个模型实例...$flight->history()->forceDelete();//强制删除所有关联模型...关于查询范围和模型事件,见移动官网文档
