Laravel学习

Stella981
• 阅读 614

主要是在laravist上看视频,讲的很棒,感觉学到了很多。好喜欢最后的那句:Happy Hacking~

Artisan 是 Laravel 内置的命令行接口。它提供了一些有用的命令协助您开发,它是由强大的 Symfony Console 组件所驱动。

插一句,安装comper弄了很久,因为网上都是OS X的方法而我开始不知道也完全不懂。看教程的时候有个博主直接说:windows是最差的开发平台没有之一。

看到这句立马关掉了他的教程,我没用过OS X自然没有发言权,但是不喜欢这样偏颇的人,是很别扭,但是就像WP,从Android用到ios再到它,我知道app生态有多差,但是我仍然喜欢它。

  • 从composer上建立项目:

    composer create-project laravel/laravel test_laravel

  • 启动服务器:

    php artisan serve

在这里和同事讨论了一下,因为太菜了半天才懂她卡在什么地方,她一直想着去配置Apache,但是Laravel使用的是PHP内置的服务器,所以其实把WAMP的Apache关掉也可以直接运行,项目也不用放在www文件夹下。


用blade来布局真的很方便,可以在视图中继承(extend) 一个 Blade 页面布局。

在blade中添加好css(bootCDN的bootstrap css推荐!

@yield('')  |  @extends('')@section('')@stop


  • 建立一个controller(在命令最后加 --plain可以创建一个没有任何预定义方法的控制器。

    php artisan make:controller SitesController

然后添加方法:

 public function about()
    {
        return view('sites.about');
    }

在Resources\views中新建about.blade.php

  • 注册路由,查看页面需要在http文件下的routes.php中注册路由

    Route::get('/about', 'SitesController@about');


  • 传递数据回视图(view)

最后在about方法中写入:

    $people = ['Talor Otwell','Jeffray Way','Happy Peter'];
    return view('sites.contact',compact('people'));

blade.php显示

@section('content')
<h1>Page</h1>
<h3>People I Admire</h3>
<ul>
    @if count($people>0)
    @foreach($people as $person)
    <li>{{$person}}</li>
    @endforeach
</ul>
@endif
@stop

[config] | 环境配置

app.php

'debug' => env('APP_DEBUG', true), //上线后记得改回false

'timezone' => 'PRC'    //设为中国时区People's Republic of China

migration可以看做是数据库版本管理,因为可以roll back。

创建一个migration文件并执行就可以直接生成表:

php artisan make:migration create_articles_table --create=articles

创建数据表的时候一直报错,Access denied。

发现远原来.env文件没配置好,

DB_DATABASE:laravel
DB_USERNAME:root 
DB_PASSWORD:

然后就在cmd中运行建表:

php artisan migrate

可以发现在laravel数据库中建好了三个表,分别是migrations, password_resets, users


Eloquent ORM | 中文文档 | 深入理解

Eloquent 是 Laravel 的 'ORM',即 'Object Relational Mapping',对象关系映射。ORM 的出现是为了帮我们把对数据库的操作变得更加地方便。

Eloquent 让一个 'Model类' 对应一张数据库表,并且在底层封装了很多 'function',可以让 Model 类非常方便地调用。

定义一个Eloquent模型

方法一:

class Article extends Model {}

方法二:

php artisan make:model Article

创建完能在app文件夹下发现有一个Article.php生成,

若没有特别指定,系统会默认自动对应名称为「类名称的小写复数形态」的数据库表。所以会对应上面migration产生的articles table;

  • 进入命令行交互界面:

    php artisan tinker

  • 实例化一个类

    $article=new app\Article;

  • 用create实现一次性创建:

    $article=App\Article::create(['title'=>'second title','content'=>'second content', 'published_at'=>Carbon\Carbon::now()]);

这时执行会报一个错_MassAsignmentException with message 'title'_

因为Laravel默认这些字段不可以直接填充,这时需要到Article.php的文件中加入$fillable属性。

protected $fillable=['title','content','published_at'];

然后在执行,好的失败了……还是exception,再看视频原来还要退出再进入tinker。

ok,继续报错:PHP Fatal error:  Class 'app\Article' not found in eval()'d code on line 1

记得之前实例化的时候就一直报这个错,不知怎么又好了……

然后AOL搜了一圈,说在app前加\也不对,然后改成App\Article就对了,刷新数据库也看到创建article成功了。不知什么原理,文件夹名我看了是小写没错。

  • 更新数据

    $article->update(['title'=>'change title']);

  • 删除model,Laravel提供了软删除,模型类中加入:

       use SoftDeletes;    class Article extends Model{     protected $dates = ['deleted_at'];     }

  • existing table增加字段

这时发现了一个问题,就是表中没有delete_at这个字段,如果直接用rollback所有数据也就没有了。这时候就再新建一个migration文件。

php artisan make:migration add_delete_at_column_to_articles --table=articles

然后再去命名的migration文件中修改,up方法添加:

$table->softDeletes();

down方法中添加:

 $table->dropcolumn('delete_at');

最后再执行就ok~通过这样还可以删除column,修改字段长度等,database:migration中有详细说明。

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
徐小夕 徐小夕
3年前
前端高效开发必备的 js 库梳理
前端高效开发必备的js库梳理之前有很多人问学好前端需要学习哪些js库,主流框架应该学vue还是react?针对这些问题,笔者来说说自己的看法和学习总结.首先我觉得在学习任何知识之前必须要有一个明确的学习目标,知道自己为什么要学它,而不是看网上说的一股脑的给你灌输各种知识,让你学习各种库,从而不断的制造大家的焦虑感.
Stella981 Stella981
3年前
PyPy 安装 pip
弄了这么久的PyPy,突然发现在Linux下面不知道如何安装!实在太丢人了,所以特别去stackoverflow上看了看!环境:Centos6.7 64位首先,yuminstallpypy安装pypy环境。然后参照PIP安装教程(https://www.oschina.net/act
Stella981 Stella981
3年前
Pycharm+Django+Python+MySQL开发 后台管理数据库
Django框架十分简单易用,适合搭建个人博客网站。网上有很多教程,大多是关于命令行操作Django,这里分享一些用最新工具进行Django开发过程,主要是PyCharm太强大,不用有点可惜。第一次写技术开发类的博文,可能抓不到重点,详略也可能失衡,感谢支持。环境&工具:Windowsserver2012  ,PyCharm2016.2.1
Stella981 Stella981
3年前
Linux(Centos)下搭建SVN服务器
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人,本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结!/\\\\\\开始\\\\\\\\\/系统环境:Centos6.8第一步:通过yum命令安装svnserve,命令如下:\yum
Stella981 Stella981
3年前
Go实现FastCgi Proxy Client 系列(三)优化篇
墨迹一点个人琐碎最近比较忙,以致于很久都没有写blog了,但是,golang的水平自认为是总算入门了。协程的个人理解网上的说法一般都是协程是轻量级线程。我个人认为协程的好处1.小2.无需在用户态和内核态切换(完全在用户态)3.无需线程上下文切换的开销(因为之上的好处)4.编码简单(原
Easter79 Easter79
3年前
Swoole2.0内置协程并发测试
Swoole2.0是一个革命性的版本,它内置了协程的支持。与Go语言协程不同,Swoole协程完全不需要开发者添加任何额外的关键词,直接以过去最传统的同步阻塞模式编写代码,底层自动进行协程调度实现异步IO。使并发编程变得非常简单。最新的版本中,内置协程已支持PHP7,同时兼具了性能和并发能力,Swoole的强大超乎想象。本文基于Github最新的Sw
Stella981 Stella981
3年前
Laravel处理session(会话)的方法详解
在Web应用程序中,有必要识别跨越请求的用户并为每个用户保存数据,为此,像Laravel这样的框架提供了一种称为会话的机制。本篇文章就来为大家介绍关于Laravel处理session(会话)的方法。!laravel(https://oscimg.oschina.net/oscnet/f7951cdc35af1b61cc4dd6bd63973e2924
Wesley13 Wesley13
3年前
Java小白入门系列 第二篇 开发环境搭建
  2018年8月31日  郑州  多云   昨天发了第一篇博文,当时就有好多老师和同学支持点赞,非常感谢大家!今天早上看了看,阅读量有四五十,感觉还行,毕竟刚开始做,嗯,还有人在看,有人支持,会继续努力哒!  这几天在学习前端的一些东西,像html、xml、json,现在学到了css,因为主学的Java,是后端,对于前端的这些东西要求不太高,学
Stella981 Stella981
3年前
Android应用如何监听自己是否被卸载
Android应用如何监听自己被卸载呢,Android系统没有提供这个回调方法。想想感觉是不可能监听到的,自己的代码都被卸载掉了,怎么来执行操作来监听呢。后来看到360这个流氓大哥,还真实现了,还挺稳定的。于是,在网上各种搜索。网上还是有很多人讨论,说怎么怎么着,来弄。我也是研究了很久。网上的方案总结说来有1.广播,只能监听到别人卸载。自己被