laravel model 两表联查示例

1对一

定义一对一关联

一对一关联是很基本的关联。例如一个 User 模型会对应到一个 Phone 。 在 Eloquent 里可以像下面这样定义关联:

class User extends Model {

 public function phone()
 {
  return $this->hasOne('App\Phone');
 }

}

传到 hasOne 方法里的第一个参数是关联模型的类名称。定义好关联之后,就可以使用 Eloquent 的动态属性取得关联对象:

$phone = User::find(1)->phone;

SQL 会执行如下语句:

select * from users where id = 1

select * from phones where user_id = 1

注意, Eloquent 假设对应的关联模型数据库表里,外键名称是基于模型名称。在这个例子里,默认 Phone 模型数据库表会以 user_id 作为外键。如果想要更改这个默认,可以传入第二个参数到 hasOne 方法里。更进一步,您可以传入第三个参数,指定关联的外键要对应到本身的哪个字段:

return $this->hasOne('App\Phone', 'foreign_key');

return $this->hasOne('App\Phone', 'foreign_key', 'local_key');

查询多条

 $rolePermissions = Permission::join('permission_role', 'permission_role.permission_id', '=', 'permissions.id')
   ->where('permission_role.role_id', $id)
   ->get();

以上这篇laravel model 两表联查示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Laravel Eloquent ORM 多条件查询的例子

    一.需求: 在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索.那么在model里就需要判断有那个字段组合,怎么组合. 网上找了很久,Laravel群里也问了几个,都说没有写过,于是自己写个吧.话不多说,见代码: function findByParam($param = array()) { $select = new Customer(); if (isset($param['name'])

  • Laravel ORM 数据model操作教程

    随机查询 $data=Move::where('release',1) ->where('is_hot',1) ->where('is_status',1) ->orderBy(\DB::raw('RAND()')) ->take(4) ->get(); 1.ORM操作需要创建对应的model class User extends Eloquent 2.有两种方式使用数据操作对象 a. 使用new关键字创建对象后执行对象的方法 b. 直接调用static方法(实际并发静态方法

  • laravel orm 关联条件查询代码

    如下所示: public function a() { return $this->belongsTo('App\Models\a', 'aid'); } $model = $this->whereHas('a', function ($query) use ($search) { $query->where('username', 'like', '%' . $search['username'] . '%'); })->with(['a:id,username'])->g

  • laravel model 两表联查示例

    1对一 定义一对一关联 一对一关联是很基本的关联.例如一个 User 模型会对应到一个 Phone . 在 Eloquent 里可以像下面这样定义关联: class User extends Model { public function phone() { return $this->hasOne('App\Phone'); } } 传到 hasOne 方法里的第一个参数是关联模型的类名称.定义好关联之后,就可以使用 Eloquent 的动态属性取得关联对象: $phone = User::f

  • Yii2.0小部件GridView(两表联查/搜索/分页)功能的实现代码

     GridView 两表联查/搜索/分页 当我们在一个网格视图中显示活动数据的时候,你可能会遇到这种情况,就是显示关联表的列的值,为了使关联列能够排序,你需要连接关系表,以及添加排序规则到数据提供者的排序组件中,对数据进行搜索,排序. Ⅰ.控制器层Controller <?php namespace backend\controllers; header("Content-type:text/html;charset=utf-8"); use Yii; use yii\web\C

  • SQL语句多表联查的实现方法示例

    目录 前言 三表联查 内连接 外连接 附:多表联合查询训练 总结 前言 最近面试实习生,发现一般来说,公司喜欢通过一些 SQL 语句来考察你对数据库的使用熟不熟悉.所以我来总结一下我在面试中遇到多表联查是怎么联查的. 三表联查 首先来说多表联查的一些知识点. 多表是指等于或者多余三个表以上的数据库查询.多表联查的类型有: 内连接:join,inner join 外连接:left join,left outer join,right join,right outer join,union 交叉连接

  • Laravel创建数据库表结构的例子

    1.简介 迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的schema构建器结对从而可以很容易地构建应用的数据库表结构.如果你曾经告知小组成员需要手动添加列到本地数据库结构,那么这正是数据库迁移所致力于解决的问题. Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的.优雅的.平滑的API. 2.生成迁移 使用 Artisan 命令make:migration来创建

  • MySQL多表联查的实现思路

    目录 多表联查场景 一对一 多对一 多对多 内连接查询 外连接 自连接 联合查询 子查询 多表联查场景 一对一 用户与用户信息表:当用户的信息数据过多时,我们可以将其分成两个表分别对应用户基本信息和用户的详情信息. create table user( `id` int auto_increment primary key comment'用户id', `name` varchar(10), `age` varchar(10), `gender` char, `tel` varchar(30),

  • 如何利用预加载优化Laravel Model查询详解

    前言 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单. 在以面向对象的方式定义数据库关系时,可以轻松查询相关的模型数据,开发人员可能不会注意底层数据库调用. 下面将通过一些例子,进一步帮助您了解如何优化查询. 假设您从数据库收到了100个对象,并且每个记录都有1个关联模型(即belongsTo). 默认使用ORM将产生101个查询; 如下所示: //

  • Yii不依赖Model的表单生成器用法实例

    本文实例讲述了Yii不依赖Model的表单生成器用法.分享给大家供大家参考.具体实现方法如下: 默认的Yii的表单生成器只需要这样就可以了: 复制代码 代码如下: $form = new CForm('application.views.site.loginForm', $model); 这里的application.views.site.loginForm也可以是配置数组.但是如果$model参数不传的话是会报错的:Fatal error: Call to a member function

  • Laravel 创建指定表 migrate的例子

    网上找了很多资料,都很坑爹,说是要把之前的表都给删掉,然后重新运行,有的说要指定database的文件路径,都不管用. php artisan migrate:reset php artisan migrate 这样的话我之前的数据不都是白搞的了?? 这样肯定不行的啊,我就自己摸索,然后发现其实可以直接创建指定的表,运行thinker,然后运行up方法即可!示例代码如下: 这个需要设置composer.json里面的自动加载,需要加载database/migrations这个文件夹下面的文件:

  • laravel 执行迁移回滚示例

    Laravel鼓励敏捷.迭代的开发方式,我们没指望在第一次就获得所有正确的. 我们对于自己编写和设计数据库,可以通过迁移文件,不断的重复去测试. 但是有些时候我们需要去执行迁移回滚 (1) 建议使用 执行上一次迁移回滚 如果是本地开发(一般都在前期开发) 执行:php artisan migrate:rollback(迁移文件在/database/migrations下) 如果是在文件夹下的回滚呢? 执行:php artisan migrate:rollback --path=/database

  • laravel model模型定义实现开启自动管理时间created_at,updated_at

    时间戳 默认情况下,Eloquent 期望 created_at 和updated_at 已经存在于数据表中,如果你不想要这些 Laravel 自动管理的数据列,在模型类中设置 $timestamps 属性为 false: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * 表明模型是否应该被打上时间戳 * * @var bool */ public $ti

随机推荐