是因为在 $activity=Activity::where('center_id','=',$center->id)->where('Date','=',date("Y-m-d", $sunday));少加了->firstOrFail();…
进行模型关联操作, php artisan tinker 执行 $user = App\Models\User::find(1) $user->followings()->attach([2, 3]) 报错,模型关联定义都是OK的,google了一番,才发现原来是tinker的bug.直接在控制器中调用就没有报这个错误.如果你用tinker也报这个错了,试一下直接在控制器中操作.by the way,我用的是5.1版本…
上次干这事已经是一年前了,之前的做法特别的繁琐.冗余,具体就是创建一个自定义 Builder 类,继承自 Query\Builder,然后覆盖 Connection 里面获取 Builder 的方法,返回自定义的 Builder,还有其他一系列很长的步骤. 下面是之前的做法: (算了,还是不说了,太蠢),总之,多看看源码有好处 就说最优雅的解决方法吧: laravel 中提供了 Macroable 的 trait,之前一直没有想过可以用上这个东西. 最近才想到可以这么做,源码看这里:https:…
本文转自:https://github.com/illuminate/database Illuminate Database The Illuminate Database component is a full database toolkit for PHP, providing an expressive query builder, ActiveRecord style ORM, and schema builder. It currently supports MySQL, Post…
优雅使用 illuminate/database 包中的 Collection 或许你很抵抗使用 Laravel , 但是你没有理由不喜欢使用 illuminate/database.这是一个 ORM 的类库.我个人认为,这个类库你是否用的好,其中很重要的一点就是你是否能用好 Collection 这个数据结构,Collection 这个数据结构的源码在 Illuminate\\Database\\Eloquent\\Collection. Collection 这个数据结构有很多方法.各种方法…
在进行数据迁移时候报错: 特殊字段太长报错, php artisan migrate 现在utf8mb4包括存储emojis支持.如果你运行MySQL v5.7.7或者更高版本,则不需要做任何事情. 当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你可能会碰到下面这个错误: 错误如下: Illuminate\Database\QueryException : SQLSTATE[]: Syntax error or access violation:…
[Illuminate\Database\QueryException] SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using pas sword: NO) (SQL: select * from information_schema.tables where table_schema = laravel_test1 and table_name = migrations) 通常是缓存造成的 在命令行中进入…
notification 报错the method build() is undefined for the type Notificatin.Builder 这事api版本号太低导致的 Notifica没有builder方法.解决方式,将项目api调整到 17 ok.…
报错: Call to undefined method Illuminate\Events\Dispatcher::fire() Whoops\Run::handleError("Uncaught Error: Call to undefined method Illuminate\Events\Dispatcher::fire() in /www/web/laravel/vendor/swooletw/laravel-swoole/src/Server/Manager.php:145 lar…
nginx: 在phpstudy中运行Laravel一键安装包时报错:Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length(),产生错误的原因是没开启php_openssl扩展,开启即可. apache: 检查http.conf   LoadModule ssl_module modules/mod_ssl.so php.ini开启extension=php_openssl.dll 将php7.1要目录…
出现这样的错误时说明自己忘记加载数据库了, application/config/aotuload.php     $autoload['libraries'] = array('database');…
自己组装的apache,php,mysql phpinfo显示 OpenSSL support     disabled (install ext/openssl) 判断为权限问题,所以修改如下. 1将php安装目录下ext下的php_openssl.dll.libeay32.dll.ssleay32.dll .php_xmlrpc.dll.php_curl.dll文件复制到windows下的system或者system32文件夹中.2将php.ini复制到windows文件夹中,打开php.i…
今天遇到一个错误,没有定义一个openssl_cipher_iv_length()方法,可是我明明开启OpenSSL了啊 如果开启了还报错 只需要把php的目录加入环境变量 -重启电脑  就解决了 但是在我执行composer更新一个插件时,显示出一个错误PHP:  syntax error, unexpected '"' in D:\phpStudy2018\PHPTutorial\php\php-7.1.13-nts\php.ini on line 162当我打开文件时,看到的是 Devel…
向customers表添加字段phone php artisan make:migration add_phone_to_customers_table 问题: 解决方法: 将DB_HOST配置项修改为:127.0.0.1 执行完数据库迁移后记得将该配置项改回来…
一个用户可能有多个文章,一个文章是某个用户书写的,这就是关系.同样文章中可能包含多个 TAG,而一个 TAG 可能关联多个文章. 在项目中,我们已经有了 User.php,也就是用户模型,查看一下,相当简单.我们希望直接使用 $user->articles() 的形式获取全部文章,让我们修改 user 模型: public function articles() { return $this->hasMany('App\Article'); } 但是我们仅仅完成了关系中的一端,让我们来处理另一…
Eloquent 模型 默认继承use Illuminate\Database\Eloquent\Model类. 数据表名称与模型名称约定: 数据库的表名一般使用“蛇形命名法”命名.蛇形命名法要求单词小写,单词之间用_下划线连接,且名称是复数. 与之对应的模型名称,则使用“帕斯卡法“命名,即单词头一字母都大写. 如果不是按以上约定,则需指明对应的数据表: class Flight extends Model { /** * 与模型关联的数据表 * * @var string */ protect…
导读:在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应...原文地址:http://www.bcty365.com/content-153-5939-1.html 在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在ORM查询时只返回数据表…
前言 一.大纲 写后端API,与数据库打交道无疑是很重要的角色. PHP数据库操作:从MySQL原生API到PDO PHP数据库操作:使用ORM Ref: [PHP] 07 - Json, XML and MySQL 二.细节 SQL 教程 三.初识 Eloquent ORM Eloquent ORM是Laravel框架使用的ORM.Laravel 的 Eloquent ORM 提供了更优雅的ActiveRecord 实现来和数据库的互动.每个数据库表对应一个模型文件. Goto: Eloque…
请阅读 https://github.com/Tucker-Eric/EloquentFilter , 里面有很全的文档和注释,以下仅列出关键部分. 1. 安装 composer require tucker-eric/eloquentfilter 2. 添加Provider 在 config/app.php 中添加  EloquentFilter\ServiceProvider::class 'providers' => [ // Other service providers... Eloq…
BOOTING ELOQUENT MODEL TRAITS So I've learnt a little Laravel/Eloquent trick today that is very much under-documented. Save for a casual mention in the Laravel documentation. Skip to TL;DR if you're you just want to see the trick. You may know that y…
全局作用域 所谓「全局作用域」,指的是预置过滤器在注册该「全局作用域」的模型类的所有查询中生效,不需要指定任何额外条件. 以 User 模型类为例,我们在系统中可能只想针对已经验证过邮箱的用户进行操作,在没有介绍「作用域」之前,可能你会在应用中到处编写这样的代码: $users = User::whereNotNull('email_verified_at')->... 通过全局作用域类实现 要实现「全局作用域」,首先需要编写一个实现 Illuminate\Database\Eloquent\S…
我尽量遍历写一遍Illuminate\Database\Query\Builder类的大部分方法 select设置查询字段 Notice::select('title')->get(); Notice::select(['title', 'content'])->get(); selectRaw查询自定义内容 Notice::selectRaw("count('id') as notice_count")->get(); addSelect 如果您已经有一个查询构建器…
Eloquent:入门 简介 定义模型(model) Eloquent 模型规范 取出多个模型 取出单个模型 / 集合 取出集合 插入更新模型  基本插入 基本更新 大批量赋值 删除模型 软删除 查询软删除的模型 查询范围 事件 简介 Laravel 所自带的 Eloquent ORM 是一个优美.简洁的 ActiveRecord 实现,用来实现数据库操作.每个数据表都有一个与之相对应的“模型(Model)”,用于和数据表交互.模型(model)帮助你在数据表中查询数据,以及向数据表内插入新的记…
查询语句为: class DateAttrModel extends BaseModel{ -- static function getDays(--){ $days = self::lists('date'); ---- return $days; } } if(in_array($date, DateAttrModel::getDays(--))){ //这里报错,看意思是in_array的第二个参数应该是一个数组却传递了一个对象 -- } 原因: 在laravel中有两种Builder类都…
Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点.以下是本人一点粗浅的认识,不敢奢求他人同意,更不能一一而足,仅为自己做一点总结而已. 一. 请求周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件. 注册类文件自动加载器:Laravel通过composer进行依赖管理,并在bootstrap/autoload.php中注册了Composer Auto Loader (PSR-4),应用中类的命名空间将被映射到…
一般得分页,我们只需要使用paginate方法,就可以简单得搞定.但是遇到数组得组合情况呢?这个时候,就需要我们使用自定义分页了.首先我们看下laravel得分页方法源码: #vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:480 public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page =…
今天就碰到这样的一个问题?想在一个页面里面放两个列表,并且两个列表都可以进行分页. 但是,laravel提供的分页方法很方便,可是两个以上就出问题了,当我点其中一个分页的链接时候,页面上其余的分页跟着切换. 这就是因为每个分页的都在同个页面,并且分页名都是用了默认的‘page’,导致了命名冲突. 在网上找了一个,找到了解决办法,就是自定义设置分页名称. 在Builder.php文件(项目名称/laravel/vendor/laravel/framework/src/Illuminate/Data…
我们知道,Laravel 自带的分页器方法包含 simplePaginate 和 paginate 方法,一个返回不带页码的分页链接,另一个返回带页码的分页链接,但是这两种分页链接页码都是以带问号的动态参数形式附加在查询字符串中,形如 https://laravelacademy.org?page=100,但是这种包含动态参数的 URL 格式对 SEO 不友好,我们最好将其转化为 https://laravelacademy.org/page/100 这种不带问号的伪静态分页链接格式,遗憾的是…
https://learnku.com/docs/laravel/5.6/eloquent/1403 本地范围 本地范围允许定义通用的约束集合以便在应用中复用. 例如, 你可能经常需要获取「受欢迎的」用户.要定义这样一个范围,只需要在对应的 Eloquent 模型方法前加入 scope 前缀. 作用域总是返回一个查询构造器实例: <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Mode…
关键是看懂laravel自带的 paginate() 方法. 在Builder.php文件(项目名称/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php)里面有一个分页的方法paginate(). 页面: <div id="a" @if(isset($attr) && $attr[1] == 'spage') style="display: none&…