查询

get() :从一张表中取出所有行,get方法返回结果集的数据组.

//用法
foreach ($users as $user) {
    echo $user->name;
}

first(): 从数据表中获取一行数据.用法:$user->name;

lists():获取数据列值列表

//用法
foreach ($titles as $title) {
    echo $title;
}

Eloquent用法

all():all方法返回模型表的所有结果

find()first()是获取单条记录模型,find()是根根据主键获取单个记录

findOrFail()firstOrFail()方法会获取查询到的第一个结果,模型找不到的时候抛出异常.如果异常没有被捕获,那么HTTP 404响应将会被发送给用户,所以在使用这些方法的时候没有必要对返回404响应编写明确的检查

firstOrNew()firstOrCreate()方法一样先尝试在数据库中查找匹配的记录,如果没有找到,则返回一个的模型实例。注意通过firstOrNew()方法返回的模型实例并没有持久化到数据库中,你还需要调用save()方法手动持久化:

create()save()都可以创建一条数据模型。create()方法受批量赋值的限制。对于关联创建的时候savecreate的不同之处在于save接收整个Eloquent模型实例而create接收原生PHP数组。

查看Eloquent打印sql语句

$request = $request->getQuery->toSql();

关于Route

对于Laravel中的路由实现方式太多了,包括基础路由,RESTful资源控制器,隐式路由,直接看Laravel中文官网手册Laravel5.1手册路由

主要记录下自己对于Laravel中路由的看法,总而言之上面三种路由用任何一种都能满足项目需求,至于哪种适合用于什么场景就得看个人了。

RESTful资源控制器 : 用于单个控制器操作增删改查比较全面的,比如系统管理。然后个性化的需求用get,post补齐。

隐式路由: 用于增删改查并不全面的,比如前台的操作提交评论之类的。隐式路由可以满足任何个性化需求,除了带参数的路由,所以带参数的路由必须用基础路由补齐。缺点:不熟悉的人找控制器方法比较麻烦。

基础路由:可以满足任何需求。缺点:路由太多了,看起来比较费劲。

Composer安装组件报错

问题如下:

composer require 'toplan/laravel-sms:~2.3.1'
./composer.json has been updated
> php artisan clear-compiled
Loading composer repositories with package information
Updating dependencies (including require-dev)
Failed to decode response: zlib_decode(): data error
Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info

Installation failed, reverting ./composer.json to its original content.

[Composer\Downloader\TransportException]
Your configuration does not allow connections to https://87.98.253.214/p/jeremeamia/superclosure%2479719c27a2bdcb1110375e344fecda9ee0a8a79c4ce99c35c2bfa1a3b48907e1.json. See https://getcomposer.org/doc/06-config.md#secure-http for details.

require [--dev] [--prefer-source] [--prefer-dist] [--no-plugins] [--no-progress] [--no-update] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...

解决问题:composer只允许通过HTTPS下载

composer config --global repositories.packagist.allow_ssl_downgrade false

Mac安装composer

sudo mv composer.phar /usr/local/bin/composer

当我们运行composer -v 的时候发现没有权限

bigface:~ bigface$ composer
-bash: /usr/local/bin/composer: Permission denied
  • 修改权限
chmod +x /usr/local/bin/composer

安装homestead报错

[bigface:~ bigface$ vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://atlas.hashicorp.com/laravel/homestead
==> box: Adding box 'laravel/homestead' (v0.5.0) for provider: virtualbox
    box: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.5.0/providers/virtualbox.box
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

SSL read: error:00000000:lib(0):func(0):reason(0), errno 60

解决方案:

rm -rf ~/.vagrant.d/tmp/*

ErrorException in Filesystem.php line 81

问题:https://laravel.io/forum/09-02-2015-errorexception-in-filesystemphp-line-81

解决方案:

mkdir -p storage/framework/views

注:最好按照官网创建storage所有目录,以防又开始报TokenMismatchException

mkdir -p storage/app/public
mkdir storage/framework/sessions storage/framework/cache