问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

laravel 使用all获取数据库数据的时候,怎么使用数据

发布网友 发布时间:2022-04-28 00:38

我来回答

2个回答

懂视网 时间:2022-04-28 05:00

下面由Laravel教程栏目给大家介绍Laravel应用跟用户打交道,就从拿到他们的数据开始!,希望对需要的朋友有所帮助!

引言

本来讲完路由和控制器,应该接着讲一讲视图的,但是鉴于视图的功能实在太枯燥,况且是前端页面,免不了写一些js和css。而laravel是偏重后端的,所以为了给后端的开发同学缓冲的时间,我们跳过视图,先来说说用户数据的获取和处理,这几乎是任何应用必备之功能。

img

用户数据同时又是危险的!本文不会教你规避危险!

代码时间

我们在讲路由规划的时候,说了如何使用url的位置参数绑定的方式进行导向,其实那也是一种获取用户输入数据的方式,

只不过,传入的位置参数一般都人畜无害,公开访问,任你来来往往。

如果是单个用户的私密数据,必然是不能直接url内嵌传输的。

laravel把用户的输入存储在 Input 对象内,而从逻辑上看,用户输入应该归属于请求项的,所以 Request 也继承了 Input 的方法和数据。

比如有下面的路由:

Route::post('form', function (IlluminateHttpRequest $request) {
 // $request->method()});

模拟的是一个表单地址,通过post方法传送数据,然后使用 Request 方法。可供使用的获取方法,我们一一道来。

先说说 $request->all(),这一个是打印所有的输入数据,比如表单内可能有下面这些字段。HTML 内容你们将就看一下哈!

<form method="post" action="/post-route?utm=12345">
 {{ csrf_field() }} <input type="text" name="firstName">
 <input type="submit"></form>

为了调试数据,我们的路由这样注册:

Route::post('/post-route', function (Request $request) {
 var_dump($request->all());});

大家猜猜会输出些什么内容呢?

/**
* [
* '_token' => 'CSRF token here',
* 'firstName' => 'value',
* 'utm' => 12345
* ]
*/

没错儿,就是看到的post表单的字段 firstName,还有 querystring 的查询参数 utm,还有一个是用于 CSRF 防护的laravel内置函数,默认的表单字段就是 __token,所以大可不必费心。

但是有代码洁癖的同学会觉得受不了,这个不是我的字段,我在代码里也用不到,我不想看到这个 __token,这个陌生的变量。可以,我们在请求参数内直接过滤掉就好了:

Route::post('/post-route', function (Request $request) {
 var_dump($request->except('_token'));});

其中,except() 方法就是用来过滤某些字段,不需要使用的。与之对应的就是 only() 方法,是指定哪些是用的字段。这样用:

$request->only(['firstName', 'utm']);

还有些时候逻辑判断有些键是否存在,laravel提供了两种方式判断是否存在,一个是 has ,一个是 exists。有同学会疑问,为什么有了 has还要 exists呢?因为他们的作用不同。

has方法不仅会判断该键存在,如果该键的值是 空(比如 null,空字符串,false,0,空数组,空对象等等),也是判断为false的。所以就有必要使用 exists 单纯地判断键的存在与否,大家用的时候一定要注意这个细微的差别。

用法很简单,直接调用方法即可:

if ($request->has('utm')) {
 // Do some work}

如果对于输入值键不存在,我们也可以为其设置一个默认值,这就是 input 方法的第二个参数,使用如下调用:

Route::post('/post-route', function (Request $request) {
 $userName = $request->input('name', 'anonymous');});

如果用户没有传入 name 字段,那么就用 anonymous 替代。

上面说的都是简单的键值对,还有一种表单,传入的字段可能会是数组,比如下面这个:

<form method="post" action="/post-route">
 {{ csrf_field() }}
 <input type="text" name="employees[0][firstName]">
 <input type="text" name="employees[0][lastName]">
 <input type="text" name="employees[1][firstName]">
 <input type="text" name="employees[1][lastName]">
 <input type="submit"></form>

laravel内获取数组可以使用点式方式读取,这是因为laravel解析的时候使用了助手类 Arr 的通用方法。比如获取某个键:

$employeeZeroFirstName = $request->input('employees.0.firstName');

明确地指定键名,并对应好层级即可。还可以使用星号匹配某一层级所有的键:

$allLastNames = $request->input('employees.*.lastName');

或者仅指定某个键,后面不管多少层级原样返回:

$employeeOne = $request->input('employees.1');

具体用法读者可以查看源码或文档,深入研究一下Arr操作类的用法。

写在最后

本文几乎涵盖了用户输入input方法的最为常用的一些方法,我们只讲了怎么正常地获取用户数据,没有讲如何验证数据有效性。因为前端验证几乎形同虚设,最后能写到数据库的数据,还是要应用程序把关。

那就是验证器的工作了,验证器,我们放到后续章节再详细地讲。

热心网友 时间:2022-04-28 02:08

如果是Laravel5,需要先在控制器里引用要使用的模型。比如:
use App\User;

取出所有记录:
$users = User::all();

根据主键取出一条数据:
$user = User::find(1);
var_mp($user->name);
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
路由器怎么进192.168.2.1? 2016年二套房最新优惠政策 ps如何快速抠图复杂背景ps如何快速抠图 天龙八部,什么是超级双线 天龙八部手游 天龙八部各区装备评分排行榜有哪些? 天龙八部,那个老区人最多,我想和朋友一起回老区, 中专英语专业可以考什么证 原神3.4新怪物汇总 原神4.3深渊怪物都有哪些-原神4.3深渊怪物时间线介绍 原神3.4新增怪物有哪些 原神3.4新怪物汇总介绍 thinkphp 中如何判断验证码是否正确 tp框架中 验证码session为空的原因 如何把Thinkphp的验证码单独使用 thinkphp如何获取session中的验证码 使用thinkPHP 验证码的注意事项? thinkphp5 验证码怎么用 thinkphp怎样检验自己生成的验证码 WampServer 中用thinkphp框架时 验证码无法显示 如何解决??? thinkphp框架的验证码源码在哪里?请提供版本和对应位置谢谢 thinkphp 怎么修改默认验证码 thinkphp手机短信验证码怎么处理 thinkphp 验证码问题 thinkphp中验证码怎么实现验证功能 thinkphp 验证码怎么调用 在Thinkphp中怎么做登陆的验证码 如何解决thinkphp5中验证码常见问题 ASP PHP JSP SQL都指的是什么啊,它们有什么区别呀? 做网站用PHP还是ASP有什么区别? asp和net还有PHP的区别是什么? ASP型空间跟PHP型空间什么区别? laravel5 怎么获取数组形式的数据 为什么Laravel会成为最成功最流行的PHP框架 在laravel或者thinkphp中使用模型获取商品列表时怎么也获取到每条数据对应的分类 PHP的Laravel中的如何从视图中获取来自数据库中的信息并在控制器中获取 laravel数据库读写分离了,如何指定从写的数据库读取数据? python将字典的键和值对换后值重复怎么办 python为什么使用字典解析会出现值一样的结果 python的dic和set的key不可变还是不能重复啊如图 python字典中存在相同的key,如何把这个key对应的值依次输出? 我用Python写的,这里为什么不会循环测试字典里的键呢? python 字典可以有相同的key吗 python 如何使数组中的元素不重复 在Python中,为什么字典的键值不可以更改 python 字典 合并重复key的问题 python字典的值可以是多个吗 Python中5是字典中的值,用*3,怎么结果是555,不是15? python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了? 求python中字典结构对值的排序的函数, 值为数字, 可能存在重复 python字典key不同,value相同的情况下,怎么取出所有key? python中字典里的值不能作为实参
  • 焦点

最新推荐

猜你喜欢

热门推荐