Laravel 多态关联使用的案例】的更多相关文章

1.实现的功能,:短信发送,需要签名和模板审核,审核结果要插进审核记录表 2,在signature(签名表模型)和 template(模板表模型)添加多态对应关系代码其实一样,代码如下: 审核记录表需要有:auditable_type, 用来保存所属模型的类名.该字段可默认插入值,也可自定义 A:在审核记录表添加 public function auditable()     {         return $this->morphTo();     } B:在签名表加 public func…
1 目标 1.1 在 Laravel 项目的开发中,多态的需求很常见,按多态关联进行排序的需求也是必须的. 1.2 请想像,我们有一个需求,荣誉栏目多态关联一个档案模型,要求在荣誉中按档案的推荐时间进行排序,以获取最近推荐内容的前5条. 2 测试 2.1 Honour <?php namespace App; use App\Traits\HasArchive; use Illuminate\Database\Eloquent\Model; class Honour extends BaseMo…
ghost commented on Apr 13, 2017 • edited by ghost  i'm currently using this code in my own project my Model (\App\Production\Models\Production Model) public function detail() { return $this->morphTo('detail'); } public function scopeDetailable($query…
首先,文档里面讲述的不是特别详细,详细寻找查询流程没有过多介绍,只是介绍如何去定义,直接使用,导致很多该明白的东西,没有说明,下面详细看看这个多态关联 是怎么定义,使用,详细查询的. 先看文档介绍 多态关联允许一个模型在单个关联下属于多个不同模型.例如,假如你想要为产品和职工存储照片,使用多态关联,你可以在这两种场景下使用单个photos表,首先,让我们看看构建这种关联关系需要的表结构: staff id - integer name - string products id - integer…
这次做新项目的时候,把图片都放在了一个表里,其他表中不再存图片信息,通过多态关联建立表之间的关系. (1)新建picture表, component表不需要处理 class CreatePictures < ActiveRecord::Migration[5.0] def change create_table :pictures do |t| t.integer :imageable_id t.string :imageable_type t.string :name t.string :md…
目标:引用多个父表 反模式:使用多用途外键.这种设计也叫做多态关联,或者杂乱关联. 多态关联和EAV有着相似的特征:元数据对象的名字是存储在字符串中的. 在多态关联中,父表的名字是存储在Issue_Type单独一列中,有时候这样的设计被称作:混合数据与原数据. 查询示例: select * from A as a               left join B as b on a.xId=b.Id and a.xType='b'               lefe join C as c…
一对一hasOne(用户-手机号) 一对多has Many(文章-评论) 一对多反向belongsTo(评论-文章) 多对多belongsToMany(用户-角色) 远层一对多hasManyThrough(国家-作者-文章) 多态关联morphpMany(文章/视频-评论) 多态多对多morphToMany(文章/视频-标签)…
2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1.4 可以非常标准匹配“依赖倒置原则”,降低前端与后端间的耦合 2.不一样的多态案例 2.1 UML静态模型图 备注:想学UML建模的可以看这篇 2.2 牙齿多态接口,代码如下: package com.wuji.duotai; public interface Tooth { void yao()…
什么是多态关联? 一个例子你就明白了:好比如说评论 它可以属于视频类 也可以属于文章类,当有个需求是 从评论表中取到视频类的数据,这就需要用到多态关联了. 简单的一句话总结:一张表对应两张表. 1 实现多态关联 1.1 文章表的结构 public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $…
hasOne 一对一 用户名-手机号hasMany 一对多   文章-评论belongTo 一对多反向 评论-文章belongsToMany    多对多 用户-角色hasManyThrough 远程一对多 国家-作者-文章moreghMany 多态关联 文章/视频-评论morephToMany 多态多对多 文章/视频-标签 创建评论模型 class Comment extends baseModel { public function post(){ return $this->belongs…
rails generate model photo title:string album:references 这会产生一个album_id列,当建立belongs_to关联时,需要用到. references算时一种结构,会产生integer. For integer, string, text and binary fields, an integer in curly braces will be set as the limit:  `rails generate model user…
案例 案例:Laravel 在文章列表中附带上前10条评论?,在获取文章列表时同时把每个文章的前10条评论一同查询出来. 这是典型分区查询案例,需要根据 comments 表中的 post_id 字段进行分区,同时根据条件进行排序,把符合条件的前 N 条是数据取出来. 在其他数据库(Oracle, SQL Server,Vertica) 包含了 row_number partition by 这样的函数,能够比较容易的实现. 比如在 SQL Server 中: SELECT * FROM ( S…
如图,一个服务(service)对应一个用户(user),一个用户对应多个标签(tag),同时一个tag也可以通过中间表(pivot)对应对个用户. 现在业务需求如下:查service,这些service对应的user同时拥有tag1.tag2.tag3.tag4标签. 一个很容易犯的错误如下: $tags = ['tag1', 'tag2', 'tag3', ''tag4]; $query = ServiceModel::query() $query->whereHas('user.tags'…
$result = Draft::update($input, ['id' => $input['id']], true); if (!empty(array_get($input, 'house_id'))) { $houses = Houses::get(array_get($input, 'house_id')); $result->objContent()->associate($houses); } public function objContent() { return $…
多对多 多对多就相当于一个专题Topic有多个文章,但是这多个文章又属于多个专题, 而且多对都必须有一个表是他们之间的关联关系表PostTopic Post表和Topic表之间没有直接的关联,而且通过关联关系表关联的 如果说你用的是一多多来获取一个专题的文章的时候, Post模型对应的是PostTopic,但是你只能获取到文章的ID,反而又麻烦 第一个参数就是要获取的模型(Posts) 第二个参数就是把这两个模型关联起来的关联关系表(TopicPost) 第三个参数就是TopicPost表中和当…
上面这个是一个模型关联的图,其实我们很容易去理解 比如说,一对一,也就是说一个用户对应的是一个手机号. 一对多,比如说一篇文章可以有多条评论 一对多反向:如一篇文章可以有多条评论,但对应每条评论也只针对于这篇文章. 下面我就对文章下的评论举例去 我们首先来到文章模型里面,设置文章-评论(一对多)模型关联 当然相对应的评论模型里我们也要设置好评论-文章(一对多的反向)关联 下一步,那就是要处理评论提交逻辑 form表单提交过来后的处理如下 这样处理后,你填写评论内容,点击提交后,数据库里面就已经存…
迁移: public function up() { Schema::create('rewards', function (Blueprint $table) { $table->increments('id'); $table->integer('user_id')->unsigned()->comment('操作用户'); $table->integer('target_user')->unsigned()->comment('目标用户'); $table-…
用户模型 public function show(Post $post,LogManager $log){ $post->load("comments"); //这种方式是预加载 ,如果没有这句,就是下面在模板加载的时候才进行模型查询 return view("post.show",compact('post'));} post模型 <?php namespace App\Models; use Illuminate\Database\Eloquent…
Eloquent是什么 Eloquent 是一个 ORM,全称为 Object Relational Mapping,翻译为 "对象关系映射"(如果只把它当成 Database Abstraction Layer 数组库抽象层那就太小看它了).所谓 "对象",就是本文所说的 "模型(Model)":对象关系映射,即为模型间关系.中文文档: http://laravel-china.org/docs/eloquent#relationships 下…
内容比较多,不总结了,直接看学院君的译文吧,已经写得很详细了 传送门:http://laravelacademy.org/post/6191.html PS1: laravel的关联模型并不是遍历一次表查询其的关联数据,例如查询20条记录(分页),并不是先查询出20条记录,再循环20条记录查询其的关联记录,如果是这样的啊,就会浪费大量的数据库连接(查询了1+20次) 那么它是怎么做的呢? 它是先查询这20条数据,然后统计记录的关联外键id,再用in查询关联表(例如 uid in (1,2,3))…
1 我们想像有这样的需求 1.1 应用中有两个类.其一是 荣誉(Honour)其一是 档案(Archive)Honour 和 Arhcive 是多态关联.即拥有档案属性的不只荣誉类,还有更多的类去关联,如:新闻.人物等,一个应用类拥有一个档案类. 1.2 为了代码的复用,我们建立一个 Trait, HasArchive 1.3 功能预期:模型删除时,在 Trait 中,将其所关联的 archive 一并删除.同时,不能影响模型中删除事件的其他逻辑「可能还有权限判断,下级关联删除等相关处理工作」.…
Laravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点.以下是本人一点粗浅的认识,不敢奢求他人同意,更不能一一而足,仅为自己做一点总结而已. 一. 请求周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件. 注册类文件自动加载器:Laravel通过composer进行依赖管理,并在bootstrap/autoload.php中注册了Composer Auto Loader (PSR-4),应用中类的命名空间将被映射到…
Artisan // 在版本 5.1.11 新添加,见 http://d.laravel-china.org/docs/5.1/authorization#creating-policiesphp artisan make:policy PostPolicy // 针对命令显示帮助信息php artisan --help OR -h // 抑制输出信息php artisan --quiet OR -q // 打印 Laravel 的版本信息php artisan --version OR -V…
###多对多关系 多对多关系和之前的关系完全不一样,因为多对多关系可能出现很多冗余数据,用之前自带的表存不下了. 我们定义两个模型:Article 和 Tag,分别表示文章和标签,他们是多对多的关系.表结构应该是这样的: article: id ... ... tag: id ... ... article_tag: article_id tag_id 在 Model 中使用: <?php class Tag extends Eloquent { protected $table = 'tags…
一.ORM编程思想 1.1 Active Record 设计模式 Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象Object到关系数据库的映射.应用Active Record时,每一个类的实例对象唯一对应一个数据库表的一行(一对一关系).你只需继承一个abstract Active Record 类就可以使用该设计模式访问数据库,其最大的好处是使用非常简单 1.2 调试工具 Laravel Debugbar Installation: composer requir…
Laravel 中一些常用的小技巧,说不定你就用上了. 1.侧栏 网站一般都有侧栏,用来显示分类,标签,热门文章,热门评论啥的,但是这些侧栏都是相对独立的模块,如果在每一个引入侧栏的视图中都单独导入与视图有关的数据的话,未免太冗余了.所以最佳的做法是:新建一个widgets视图文件夹,再利用Laravel 的ViewComposers单独为侧栏绑定数据,这样侧栏就可以随便引入而不用关心数据是否绑定啦. 举个栗子,拿最常用的分类侧栏来说,在resources/views/widgets下新建你的分…
这里我们users表对应的模型类名是users,大家特意注意下和user取名的不同 1.一对一关系 1>表A和表B的记录一一对应,比如一个用户对应一个社交账号 数据表的设计如下:   2>定义模型Users,并在其中定义与UserAccounts的一对一对应关系: public function account() { return $this->hasOne('App\Http\Models\UserAccounts'); } 3>最后在控制器中编写测试代码如下: $accoun…
多态的好处: A:提高了代码的维护性(继承保证) B:提高了代码的扩展性(由多态保证) 猫狗案例代码 class Animal { public void eat(){ System.out.println("eat"); } public void sleep(){ System.out.println("sleep"); } } class Dog extends Animal { public void eat(){ System.out.println(&q…
Laravel 的 Eloquent 使用 Between $query->whereBetween('age',[$from,$to]) 这是生成 And between ... and ..., or between ... and ... 是 orWhereBetween Laravel 使用关联查询 参考: Query where column is in another table Laravel 5 where clause from another table Eloquent O…
一  挑战 设计从来就是个挑战. 当我们第一次接触数据库,学习数据库基础理论时,都需要学习范式,老师也一再强调范式是设计的基础.范式是这门课程中的重要部分,在期末考试中也一定是个重要考点.如果我们当年大学挂科了,说不定就是范式这道题没有做好.毕业后,当我们面试时,往往也有关于表设计方面拷问. 很多时候,我们错误地认为,花费大量时间用在设计上,问题根源在于关系数据库(RDBMS),在于二维表及其之间的联系组成的一个数据组织.而真实的环境中,我们正在大量使用noSQL或者NewSQL,按照目前的趋势…