18910140161

laravel模型关联查询 laravel从现有的数据库生成模型并通过模型操作数据库

顺晟科技

2023-02-26 09:46:32

47

一:拓展安装

拉勒韦尔中从现有的数据库生成模型并通过模型操作数据库需要使用到reliese/laravel拓展

reliese/laravel插件地址:https://packagist.org/package.

作曲家需要reliese/laravel

composer require-ignore-platform-reqs reliese/laravel//忽略服务器端编程语言(专业超文本预处理器的缩写)版本要求

二:配置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 ');

}

}

二:使用reliese/laravel

1:生成models.php

php工匠供应商:publish - tag=reliese-models

php工匠配置:清除在项目目录下运行上面两行命令后你会发现在配置目录下生成了一个models.php文件

2:配置models.php

由于拉尔韦尔是通过雄辩的ORM来实现与数据库交互的,所以修改config/models.php的父母参数

parent '=Illuminate \ Database \口才\模型*班级,当你要生成的数据库模型不是默认的数据库配置数,将config/models.php文件的关系参数修改成你的关系型数据库连接名

连接='mysql001 '如果你需要修改生成的模型文件指定目录,修改config/models.php文件的小路和命名空间

path'=app_path('Models '),

命名空间='App\Models '

3:生成model

php artisan代码:型号//从默认连接中构建模型运行上面的命令会在你在配置的config/models.php文件中配置的小路目录下生成默认连接的数据库的表的模型文件

注意:执行上面的命令可能会报如下错误image.png

解决方案:

设计者需要具有所有依赖项的doctrine/dbal:^2.6给特定的表生成模型服务器端编程语言(Professional Hypertext Preprocessor的缩写)工匠代码:型号-表格=测试给指定的连接生成模型服务器端编程语言(Professional Hypertext Preprocessor的缩写)工匠代码:型号-连接=mysql001给指定的连接的指定表生成模型php工匠代码:models-connection=MySQL 001-table=test

4:操作数据库

(1):数据查询

【1】:基础查询

$ 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();

【2】:连表查询

在模型中增加关联函数

//一对一

公共函数用户信息()

{

返回$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();

(2):数据插入

【1】:单个新增

$user=新用户;

$ user-user _ no=' 100 '

$ user-user _ name=' test '

$ user-save();

【2】:批量新增

可以批量赋值的字段必须在模型文件中受保护的$fillable=[]数组中$user=User:create([

user_name'='Flight 10 '

user_no'='002 '

]);

(3):数据更新

【1】:单个更新

$ User=User:find(1);

$ user-user _ name=' test1 '

$ user-save();

【2】:批量更新

User:where('status '1)

-update(['用户名'='测试更新']);

(4):数据删除

$ 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();//删除所有状态为一的数据

  • TAG:
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航