laravel模型关联查询 laravel从现有的数据库生成模型并通过模型操作数据库
一:拓展安装laravel中从现有的数据库生成模型并通过模型操作数据库需要使用到reliese/laravel拓展reliese/laravel插件地址: https://packagist.org/
顺晟科技
2023-02-26 09:46:32
47
拉勒韦尔中从现有的数据库生成模型并通过模型操作数据库需要使用到reliese/laravel拓展
reliese/laravel插件地址:https://packagist.org/package.
作曲家需要reliese/laravel
composer require-ignore-platform-reqs reliese/laravel//忽略服务器端编程语言(专业超文本预处理器的缩写)版本要求
在config/app.php文件中添加
提供商的=[
/*
*打包服务提供商.
*/
reliese \ Coders \ CodersServiceProvider:class,
],如果你仅仅想要在开发环境使用reliese/laravel插件的话,可以直接修改应用程序\提供程序\应用服务提供程序。服务器端编程语言(Professional Hypertext Preprocessor的缩写)文件
公共函数寄存器()
{
//
if($ this-app-environment()==' local '){
$ this-app-register(' \ Reliese \ Coders \ CodersServiceProvider ');
}
}
php工匠供应商:publish - tag=reliese-models
php工匠配置:清除在项目目录下运行上面两行命令后你会发现在配置目录下生成了一个models.php文件
由于拉尔韦尔是通过雄辩的ORM来实现与数据库交互的,所以修改config/models.php的父母参数
parent '=Illuminate \ Database \口才\模型*班级,当你要生成的数据库模型不是默认的数据库配置数,将config/models.php文件的关系参数修改成你的关系型数据库连接名
连接='mysql001 '如果你需要修改生成的模型文件指定目录,修改config/models.php文件的小路和命名空间
path'=app_path('Models '),
命名空间='App\Models '
php artisan代码:型号//从默认连接中构建模型运行上面的命令会在你在配置的config/models.php文件中配置的小路目录下生成默认连接的数据库的表的模型文件
注意:执行上面的命令可能会报如下错误
解决方案:
设计者需要具有所有依赖项的doctrine/dbal:^2.6给特定的表生成模型服务器端编程语言(Professional Hypertext Preprocessor的缩写)工匠代码:型号-表格=测试给指定的连接生成模型服务器端编程语言(Professional Hypertext Preprocessor的缩写)工匠代码:型号-连接=mysql001给指定的连接的指定表生成模型php工匠代码:models-connection=MySQL 001-table=test
$ User=User:where(' status '1)-get();//查询状态为一的所有数据
//查询所有数据(等同于User:get())
$ User=User:all();
//光标允许你使用游标来遍历数据库数据,该游标只执行一个查询。处理大量数据时,可以使用光标方法可以大幅度减少内存的使用量
foreach (User:where('user_name '' abc')-cursor() as $model){
var _ dump($ model-user _ name);
}
//通过主键返回一条数据
$ User=User:find(27);
//主键数组为参数调用发现方法,它将返回匹配记录的集合
$user=User:find([27,28]);
//查询不到数据会抛出照亮“数据库”口才\ModelNotFoundException
$ User=User:findOrFail(1);
$user=User:where('sge '''10)-firstOrFail();
在模型中增加关联函数
//一对一
公共函数用户信息()
{
返回$this-hasOne(UserInfo:class,' user_id '' user _ id ');
}
//一对多
公共函数user_child()
{
return $ this-有多个(user child:class,' user_id '' user _ id ');
}
//多对一
公共函数用户角色()
{
return $ this-belongs to(UserRole:class,' role_id '' role _ id ');
}根据用户数据查到用户信息数据,其他查询遵循此规律
$ User=User:find(1);
$用户-用户_子模型原生连表查询:
$ info=User:select(' User。用户编号''产品.产品名称')
-leftJoin('product '' product.user_id ''='' user.id ')
-get();
$user=新用户;
$ user-user _ no=' 100 '
$ user-user _ name=' test '
$ user-save();
可以批量赋值的字段必须在模型文件中受保护的$fillable=[]数组中$user=User:create([
user_name'='Flight 10 '
user_no'='002 '
]);
$ User=User:find(1);
$ user-user _ name=' test1 '
$ user-save();
User:where('status '1)
-update(['用户名'='测试更新']);
$ flight=User:find(32);
$ flight-delete();
user:destroy(1);//删除主键为一的数据
User:destroy([1,2,3]);//删除主键为1,2,3的数据
User:destroy(1,2,3);//删除主键为1,2,3的数据
User:where('status '0)-delete();//删除所有状态为一的数据