-
Notifications
You must be signed in to change notification settings - Fork 578
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2016 版 Laravel 系列入门教程(一)【最适合中国人的 Laravel 教程】 #4
Comments
文中图示 :连接mysql的工具 是那个?谢谢 |
支持下!实在不想写 thinkphp 的代码了,可是要 TP 的公司好多。 |
这是本地域名,本质上讲就是 127.0.0.1:1024/home From My iPhone
|
http://127.0.0.1/learnlaravel5/public/login 提示Not Found The requested URL /learnlaravel5/public/login was not found on this server. |
@magicwater 伪静态问题。如果你搞不定这个问题,建议先使用 PHP 内置 HTTP 服务器来开发。 |
我先研究一下,感谢回复。 |
这教程写的太好了,我转走了啊 |
请问我在php artisan db:seed的时候找不到类是为什么? |
@Lyttoni DatabaseSeeder.php 和 ArticleSeeder.php 内容都和示例代码一样? |
@johnlui 是的,都是一样的.并且官方文档中的DatabaseSeeder.php中还多了一行use Illuminate\Database\Eloquent\Model;。。 |
@Lyttoni 那是因为文档是 5.1 的。我可能知道原因了,教程里面没写。因为 database 文件夹的自动加载是 classmap 的,就是说手动扫描,所以新建了这个类文件之后,还需要 composer dump-autoload 来将其加入自动加载。我会更新一下教程,感谢反馈~ |
@johnlui 十分感谢,问题已经解决了:D ,在composer dump-autoload的时候会写入数据到config.json...Linux下需要给予权限 |
ErrorException in 4efa357d8f6ebc1082e0198e3a75bc42ff5dc523.php line 12: 按步骤,到“b. 进行数据库迁移(migration)”就进行不下去了。 。。老提示这个错误 |
运行 php artisan db:seed之后,会报错: |
@Smartyue fatal error 是语法错误,目测 seeder 里面语法错了 |
@johnlui 额,刚刚看了下您的源码,我已经解决了,是因为我在app目录下的Article.php中写了东西,受您教程的影响,犯了低级错误.... |
一个前端进公司就让我去学Laravel,一头雾水,感觉中文的laravel教程真是少有好的,现在渐渐感觉 Laravel 的优雅了,然而我还是喜欢node :P |
写的太好了,作者大大辛苦了,灰常感谢~~ |
你好,我看到你写的article 类名是单数,生成数据库的时候 Schema::create('articles', function... 用的复数,最后在用Seeder生成数据的时候没问题的,我试着把数据库生成单数的article,最后用seeder生成的时候说没找到复数的articles表,我想问下这个是规定吗,数据库里的表比类名多个s? |
@Pine0302 是的,我教程里写了呦 |
找到了 |
您的文章写的真好,看起来很舒服,容易入门 |
请问 Article::find(2); 着小例子,在哪写测试啊, |
can't find setContainer() |
执行 : 以后,浏览器访问:http://127.0.0.1:1024 PS: http://localhost 和 http://127.0.0.1 都能正常显示 |
直接用homestead来快速搭建laravel的调试环境,更方便 |
@ucoker 好的,我试下。谢谢! |
php -S 0.0.0.0:1024 |
我用的5.1 ,在db:seed创建填充数据的时候会提示表不存在,我用的article命名,而系统自动识别为articles,所以会报错。 |
优秀作品!力透纸背!造福人类! |
修改过2017_02_02_202126_create_article_table 后执行php artisan migrate报错SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' alre
|
@benbenlang 翻译一下“Table 'users' already exists” |
@johnlui 我知道什么意思,但我不知道怎么解决,我重建了项目还是这样.我是代码新手,你能写个2017版的吗,这样新手会遇到的问题少一点,谢谢你! |
这问题解决不了说明你对数据库的基础知识还不了解,建议先学习简单框架如 CodeIgnitor 把基本的知识学会,再来学习 Laravel。
From My iPhone
… 在 2017年2月4日,00:50,benbenlang ***@***.***> 写道:
@johnlui 我知道什么意思,但我不知道怎么解决,我重建了项目还是这样.我是代码新手,你能写个2017版的吗,这样新手会遇到的问题少一点,谢谢你!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
需要安装 php 的依赖 |
执行php artisan db:seed |
已经找到了,写错了 |
学习一下 |
大哥,写的太好了!我用的是laravel一键安装包,laravel是5.2版本的,环境是wamp64位集成环境。 第二个问题:我配置了虚拟主机,访问首页有反应,但是不能访问login,如果使用localhost:8000/login就可以,这个是我哪里没配置好吗?windows, apache ,mysql,php集成环境。 第二个问题已解决,虚拟机没配好。 |
看到楼主加载的图片,就知道楼主科学上网之路不是好顺啊。 |
@littlewrite 这是 Github 自己爬取放到自己服务器的,跟我没关系呦 |
@littlewrite 经过我对图片链接的简单修改,Github 重新pa爬了图片,图片出来啦 |
使用5.4学习的话会有一个 字符串长度的坑 public function boot() |
laravel 5.4 要不是加载之前旧的数据库配置,使劲数据库连接报错 |
@PleaseCallMeXiuye 用 |
@cancerXW table 写成了 tabke |
@johnlui 谢谢,没注意到代码的问题。还有个问题Article::create和Article::created 有什么区别?为什么laravel 前面我这出现了数据加不进去,也没提示报错。回去查找对比了下,发现多个d,这个是ide自己联想出来的。这两个有什么区别么? |
@lz408682690 防火墙问题吧。 |
Laravel 5.4 migrate时报错: Specified key was too long error |
@Pine0302 关于article和articles的问题,在laravel的官方的eloquent文档中有解释(文中拿一个叫Flight的model举例):
上文的意思是如果没有指定model对应的table name,会自动认为model名称的复数形式是table name。也可以通过在class Flight添加 |
@zl02655931 在第六步执行 |
@AesopL 和这个并没有绝对的关系,对表名称的定义在这个文件里面: |
写的很好,谢谢你! |
在make:auth和migrate的地方就卡住了。。。make:auth后在login里输入邮箱密码后报错 命令行php artisan migrante报错 SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from informat In Connector.php line 67: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) 请指教。。。 |
基于 Laravel 5.5 的 2017 版教程已经发布:#16
本文基于 Laravel 5.2 版本,无奈 5.2 的中文文档还没有跟上,大家勉强看一下 5.1 的吧:
Laravel 5.1 中文文档:
默认条件
你应该懂得 PHP 网站运行的基础知识,并且有了一个完善的开发环境。跟随本教程走完一遍,你将会得到一个基础的包含登录、后台编辑、前台评论的简单 blog 系统。
Tips
开始学习
1. 安装
许多人被拦在了学习 Laravel 的第一步:安装。并不是因为安装有多复杂,而是因为【众所周知的原因】。在此我推荐一个 composer 全量中国镜像:http://pkg.phpcomposer.com/ 。启用 Composer 镜像服务作为本教程的第一项小作业请自行完成哦。
镜像配置完成后,在终端(Terminal 或 CMD)里切换到你想要放置该网站的目录下(如 C:\wwwroot、/Library/WebServer/Documents/、/var/www/html、/etc/nginx/html 等),运行命令:
然后,稍等片刻,当前目录下就会出现一个叫 learnlaravel5 的文件夹,安装完成啦~
2. 运行
为了尽可能地减缓学习曲线,推荐宝宝们使用 PHP 内置 web 服务器驱动我们的网站。运行以下命令:
cd learnlaravel5/public php -S 0.0.0.0:1024
这时候访问
http://127.0.0.1:1024
就是这个样子的:我在本地 hosts 中绑定了 fuck.io 到 127.0.0.1,所以截图中我的域名是 fuck.io 而不是 127.0.0.1,其实他们是完全等价的。
这时候你可能要问了:为什么本宝宝的页面是一片空白?请使用开发者工具查看网络请求,只要是 200 状态就说明运行成功了,空白是因为这个页面引用了 Google Fonts,你懂的~
至于为什么选择 1024 端口?因为他是 *UNIX 系统动态端口的开始,是我们不需要 root 权限就可以随意监听的数值最小的端口。
另外,建议不熟悉 PHP 运行环境搭建的宝宝们不要轻易尝试使用 Apache 或 Nginx 驱动 Laravel,特别是在开启了 SELinux 的 Linux 系统上跑。关于 Laravel 在 Linux 上部署的大坑,本宝宝可能要单写一篇长文分享给宝宝们。
3. 体验牛逼闪闪的 Auth 系统
Laravel 利用 PHP5.4 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管理的系统,例如公司内部用的简单管理系统。
激活这个功能非常容易,运行以下命令:
访问
http://fuck.io:1024/login
,如果你本地已经科学上网,那就能看到以下页面:如果你不能科学上网,就把
learnlaravel5/resources/views/layouts/app.blade.php
中的https://fonts.googleapis.com
换成http://fonts.useso.com
就好啦~cdnjs.cloudflare.com 可能会短暂抽风,不要灰心,那只是大墙在抖动,一会儿就好了。
4. 连接数据库
接下来我们要连接数据库了,请自行准备好 MySQL 服务哦。
a. 修改配置
不出意外的话,learnlaravel5 目录下已经有了一个 .env 文件,如果没有,可以复制一份 .env.example 文件重命名成 .env,修改下面几行的值:
推荐新建一个名为 laravel5 的数据库,并且使用 root 账户直接操作,降低学习数据库的成本。
数据库配置好之后,在登录界面填写任意邮箱和密码,点击 Login,你应该会得到以下画面:
它说 users 表不存在呀,接下来我们将见识 Laravel 另外一个实用特性。
b. 进行数据库迁移(migration)
运行命令:
我们得到了如下结果:
数据库迁移成功!赶快打开 http://fuck.io:1024/home 注册一个用户试试吧~
下图是本宝宝注册了一个 username 为 1 用户:
c. migration 是啥?
打开
learnlaravel5/database/migrations/2014_10_12_000000_create_users_table.php
文件,你肯定能一眼看出它的作用:用 PHP 描述数据库构造,并且使用命令行一次性部署所有数据库结构。5. 使用 Laravel 的“葵花宝典”:Eloquent
Eloquent 是 Laravel 的 ORM,是 Laravel 系统中最强大的地方,没有之一。当初 Laravel 作者在开发第一版的时候花了整整三分之一的时间才搞出来 Eloquent。当然,“欲练此功,必先自宫”,Eloquent 也是 Laravel 中最慢的地方,迄今无法解决。(路由、自动载入、配置分散、视图引发的性能问题都通过缓存几乎彻底解决了)
当然,我们还是要承袭第一版教程中对 Eloquent ORM 的描述:鹅妹子英!
a. Eloquent 是什么
Eloquent 是 Laravel 内置的 ORM 系统,我们的 Model 类将继承自 Eloquent 提供的 Model 类,然后,就天生具备了数十个异常强大的函数,从此想干啥事儿都是一行代码就搞定。
b. 怎么用?
我们使用 Artisan 工具新建 Model 类及其附属的 Migration 和 Seeder(数据填充)类。
运行以下命令:
去看看你的 app 目录,下面是不是多了一个 Article.php 文件?那就是 Artisan 帮我们生成的 Model 文件:
如此简洁有力的代码,隐藏了背后极高的难度和巨大的复杂度,让我们闭上眼睛,静静地感受 Laravel 的优雅吧 (~ ̄▽ ̄)~
下面是几个简单的例子:
找到 id 为 2 的文章打印其标题
查找标题为“我是标题”的文章,并打印 id
查询出所有文章并循环打印出所有标题
查找 id 在 10~20 之间的所有文章并打印所有标题
查询出所有文章并循环打印出所有标题,按照 updated_at 倒序排序
6. 使用 Migration 和 Seeder
接下来我们生成对应 Article 这个 Model 的 Migration 和 Seeder。
a. 使用 artisan 生成 Migration
在 learnlaravel5 目录下运行命令:
成功之后打开
learnlaravel5/database/migrations
,你会发现有一个名为 2*****_create_article_table 的文件被创建了。我们修改他的 up 函数为:这几行代码描述的是 Article 对应的数据库中那张表的结构。Laravel 默认 Model 对应的表名是这个英文单词的复数形式,在这里,就是 articles。接下来让我们把 PHP 代码变成真实的 MySQL 中的数据表,运行命令:
执行成功后,articles 表已经出现在数据库里了:
上图中的软件叫 Sequel Pro,是一个开源的 MAC 下 MySQL GUI 管理工具,超好用,推荐给用 MAC 的同学。
b. 使用 artisan 生成 Seeder
Seeder 是我们接触到的一个新概念,字面意思为播种机。Seeder 解决的是我们在开发 web 应用的时候,需要手动向数据库中填入假数据的繁琐低效问题。
运行以下命令创建 Seeder 文件:
我们会发现
learnlaravel5/database/seeds
里多了一个文件ArticleSeeder.php
,修改此文件中的 run 函数为:上面代码中的
\App\Article
为命名空间绝对引用。如果你对命名空间还不熟悉,可以读一下 《PHP 命名空间 解惑》,很容易理解的。接下来我们把 ArticleSeeder 注册到系统内。修改
learnlaravel5/database/seeds/DatabaseSeeder.php
中的 run 函数为:由于 database 目录没有像 app 目录那样被 composer 注册为 psr-4 自动加载,采用的是 psr-0 classmap 方式,所以我们还需要运行以下命令把
ArticleSeeder.php
加入自动加载系统,避免找不到类的错误:然后执行 seed:
你应该得到如下结果:
这时候刷新一下数据库中的 articles 表,会发现已经被插入了 10 行假数据:
The text was updated successfully, but these errors were encountered: