当前位置: 首页 > 后端技术 > PHP

Laravel从已有的数据库生成模型,并通过模型操作数据库

时间:2023-03-29 23:40:44 PHP

一:扩展安装laravel从现有数据库生成模型,通过模型操作数据库,需要使用relieve/laravel扩展reliefe/laravel插件地址:https://packagist.org/package...composerrequirerelivee/laravelcomposerrequire--ignore-platform-reqsrelieve/laravel//忽略Php版本要求2:配置reliefe/laravel并在config/app.php文件中添加'providers'=>[/**PackageServiceProviders...*/Reliese\Coders\CodersServiceProvider::class,],如果只想在开发环境使用reliee/laravel插件,直接修改app\Providers\AppServiceProvider.php即可filepublicfunctionregister(){//if($this->app->environment()=='local'){$this->app->register('\Reliese\Coders\CodersServiceProvider');}}二:使用reliefe/laravel1:生成models.phpphpartisanvendor:publish--tag=reliese-modelsphpartisanconfig:clear在项目目录下运行以上两行命令后,会发现多了一个models.php文件在config目录下生成2:configuremodels.php由于larvel使用EloquentORM实现与数据库的交互,所以修改config/models.php的parent参数'parent'=>Illuminate\Database\Eloquent\Model::class,当你要生成的数据库模型不是默认的数据库配置号时,设置config/models.php文件的连接修改参数为你的mysql连接名'connection'=>'mysql001',如果需要修改生成模型文件的指定目录,修改config/的路径和命名空间'path'=>app_path('Models'),'namespace'models.phpfile=>'App\Models',3:Generatemodelphpartisancode:models//Buildamodelfromthedefaultconnection运行上面的命令会在你配置的config/models中配置的路径目录下生成默认连接。php文件数据库表的模型文件注意:执行上述命令可能会报如下错误解决方法:composerrequiredoctrine/dbal:^2.6--with-all-dependencies为特定表生成模型phpartisancode:models--table=test为指定连接生成模型phpartisancode:models--connection=mysql001为指定连接的指定表生成模型phpartisancode:models--connection=mysql001--table=test4:操作数据库(1):数据查询【1】:基础查询$user=User::where('status',1)->get();//查询状态为1的所有数据//查询所有数据(相当于User::get())$user=User::all();//游标允许你使用游标来遍历数据库数据,游标只执行一个查询。在处理大量数据时,可以使用游标方式,大大减少内存占用user_name);}//通过主键返回一条数据$user=User::find(27);//主键数组作为参数调用find方法,会返回匹配记录的集合$user=User::find([27,28]);//查询不到数据会抛出Illuminate\Database\Eloquent\ModelNotFoundException$user=User::findOrFail(1);$user=User::where('sge','>',10)->firstOrFail();[2]:添加关联函数//一对一publicfunctionuser_info(){return$this->hasOne(UserInfo::class,'user_id','user_id');}//一对多publicfunctionuser_child(){return$this->hasMany(UserChild::class,'user_id','user_id');}//多对一publicfunctionuser_role(){return$this->belongsTo(UserRole::class,'role_id','role_id');}根据user数据在user_info数据中查找,其他查询遵循此规则$user=User::find(1);$user->user_childmodel原生表连接查询:$info=User::select('user.user_no','product.product_name')->leftJoin('product','product.user_id','=','user.id')->get();(2):数据插入[1]:singlenew$user=newUser;$user->user_no='100';$user->user_name='test';$user->save();[2]:可以批量赋值的批量添加字段必须在模型文件中保护$fillable=[]数组中的$user=User::create(['user_name'=>'Flight10','user_no'=>'002']);(3):数据更新[1]:单次更新$user=User::find(1);$user->user_name='test1';$user->save();【2】:批量更新User::where('status',1)->update(['user_name'=>'testupdate']);(4):数据删除$flight=User::find(32);$航班->删除();User::destroy(1);//删除主键为1的数据User::destroy([1,2,3]);//删除主键为1,2,3的数据User::destroy(1,2,3);//删除主键为1,2,3的数据User::where('status',0)->delete();//删除所有状态为1的数据