- 浏览: 830855 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xieye:
jetty插件有好几个版本,1.6,1.7,1.8
我选的是用 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
还有,
注:第2部分时,需要先安装jetty,我自己在安装过程 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
说明一下:实际使用中,导入时我并没有错误。2、我把eclips ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
其实还是有一些先决条件的。1是外部环境,2是进步是阶段性的(意 ...
(转载文章)如何愉悦起来:一位精神治疗师的见解 -
mandy_yanzi:
我都已经饿7天了坚持为了我的衣衣
身体健康的问题
我的Eloquent单独使用系列文章
php的db类库Eloquent单独使用系列(1)
php的db类库Eloquent单独使用系列(2) - 分页
php的db类库Eloquent单独使用系列(3) - sql日志
php的db类库Eloquent单独使用系列(4)- 事件监听
php的db类库Eloquent单独使用系列(5)- 模型转数组
php的db类库Eloquent单独使用系列(6)- 一对一关联
php的db类库Eloquent单独使用系列(7)- 一对多关联
php的db类库Eloquent单独使用系列(8)- 多对多关联
php的db类库Eloquent单独使用系列(9)- 多对多关联 - 表关联自身
php的db类库Eloquent单独使用系列(10)- 多对多关联 - 远程一对多
php的db类库Eloquent单独使用系列(11)- 多对多关联 - 添加模型属性
php的db类库Eloquent单独使用系列(12)- 结果集模型转数组 - 2
本系列文章的目的就是脱离laravel环境使用Eloquent,因为它好用。
本系列文章所有代码均测试通过。Eloquent版本:5.4.27
本文的目的是使用多对多关联时,自身关联该怎么做。
首先建表,一个用户可以关注多个用户,也可以被多个用户关注。需建2张表才能满足需求。
源代码
总共2个文件,主程序,用户模型类,
User.php
主程序
浏览器输出
总结:
多写个方法就成了,本示例里是 fans()
php的db类库Eloquent单独使用系列(1)
php的db类库Eloquent单独使用系列(2) - 分页
php的db类库Eloquent单独使用系列(3) - sql日志
php的db类库Eloquent单独使用系列(4)- 事件监听
php的db类库Eloquent单独使用系列(5)- 模型转数组
php的db类库Eloquent单独使用系列(6)- 一对一关联
php的db类库Eloquent单独使用系列(7)- 一对多关联
php的db类库Eloquent单独使用系列(8)- 多对多关联
php的db类库Eloquent单独使用系列(9)- 多对多关联 - 表关联自身
php的db类库Eloquent单独使用系列(10)- 多对多关联 - 远程一对多
php的db类库Eloquent单独使用系列(11)- 多对多关联 - 添加模型属性
php的db类库Eloquent单独使用系列(12)- 结果集模型转数组 - 2
本系列文章的目的就是脱离laravel环境使用Eloquent,因为它好用。
本系列文章所有代码均测试通过。Eloquent版本:5.4.27
本文的目的是使用多对多关联时,自身关联该怎么做。
首先建表,一个用户可以关注多个用户,也可以被多个用户关注。需建2张表才能满足需求。
CREATE TABLE users ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL DEFAULT '' COMMENT '用户名称', age int(11) NOT NULL DEFAULT '0' COMMENT '年龄', PRIMARY KEY (id) ); CREATE TABLE user_follows ( id int(11) NOT NULL AUTO_INCREMENT, to_user_id int NOT NULL DEFAULT 0 COMMENT '被关注人', from_user_id int NOT NULL DEFAULT 0 COMMENT '关注人uid', create_time int not null default 0 comment '关注时间', PRIMARY KEY (id) ) comment "关注表";
源代码
总共2个文件,主程序,用户模型类,
User.php
<?php namespace app\model; use \Illuminate\Database\Eloquent\Model; /** * User模型类 */ class User extends Model { protected $table = 'users'; public $timestamps = false; // 查询我关注了哪些人。 public function follows() { // 重要说明:参数2是关联表名, return $this->belongsToMany('app\model\User', 'user_follows', 'from_user_id', 'to_user_id') ->withPivot('create_time' ); } // 查询我的粉丝 public function fans() { // 重要说明:参数2是关联表名, return $this->belongsToMany('app\model\User', 'user_follows', 'to_user_id', 'from_user_id') ->withPivot('create_time' ); } }
主程序
<?php namespace app\control; use Illuminate\Database\Capsule\Manager; use app\model\User; class Ill4 { /** * 主程序。 */ public function index() { $db = new Manager (); $db->addConnection ( [ 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'test1', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '' ] ); $db->setAsGlobal (); $db->bootEloquent (); $db::delete('delete from users '); $db::delete('delete from user_follows '); foreach (range(1,10) as $v) { $user = new User (); $user->name = '用户'.$v; $user->id = $v; $user->save (); // 新模型添加 } $db::table('user_follows')->insert([ 'from_user_id' => 1, 'to_user_id' => 2, 'create_time' => time(), ]); $db::table('user_follows')->insert([ 'from_user_id' => 1, 'to_user_id' => 3, 'create_time' => time(), ]); $db::table('user_follows')->insert([ 'from_user_id' => 2, 'to_user_id' => 3, 'create_time' => time(), ]); // 用户3关注1和5,用户3被1和2关注。 $db::table('user_follows')->insert([ 'from_user_id' => 3, 'to_user_id' => 1, 'create_time' => time(), ]); $db::table('user_follows')->insert([ 'from_user_id' => 3, 'to_user_id' => 5, 'create_time' => time(), ]); echo "<h4>用户3关注1和5,用户3被1和2关注。</h4>"; echo "<h2>用户3关注的人</h2>"; echo User::find(3)->follows->toJson(JSON_UNESCAPED_UNICODE); echo "<br>"; echo "<h2>用户3的粉丝</h2>"; echo User::find(3)->fans->toJson(JSON_UNESCAPED_UNICODE); echo "<br>"; echo '<br>all ok!'; } }
浏览器输出
总结:
多写个方法就成了,本示例里是 fans()
发表评论
-
召唤神龙 - 安装 centos 8, php 8, mysql 8, laravel 8 的整套 php 运行环境
2020-11-27 16:26 674本文编写时间:2020-11-27 传说集齐龙珠可以召唤神 ... -
centos8 使用阿里镜像快速安装php7.4套件
2020-11-15 00:48 809centos8 使用阿里镜像快速安装php7.4套件 本文只 ... -
centos7 使用阿里镜像快速安装php7.4套件
2020-11-15 00:32 1218本文只考虑centos7 今日 2020-11-16 rem ... -
composer常用命令
2020-11-05 14:46 1437列出当前全局配置 composer config -l -g ... -
期待centos8+php8 + mysql8 + laravel8,8888
2020-10-29 19:24 486期待centos8+php8 + mysql8 目前主要使用 ... -
ubuntu 安装 php7.4以及各类插件
2020-10-24 13:20 1089ubuntu 安装 php7.4以及各类插件 安装系统 最近 ... -
宝塔定义站点
2020-02-24 10:41 2宝塔定义站点。 1111111111111111111111 ... -
让php-fpm以root账号运行
2020-02-19 21:41 809一般来说,我们没有这种需求,但是当需要时, 可以让php-fp ... -
将代码部署到coding.net
2020-01-10 14:20 631coding.net 是一个git仓库,有免费有收费。 首先 ... -
php部署工具deployer技巧 - vendor目录创建
2020-01-06 12:06 888deployer是个好东西,可是每次都composer ,其实 ... -
自定义redis多个实例
2020-01-04 01:17 645假如多个项目部署到同一台服务器,有时会被redis的各项目前缀 ... -
推荐使用php的部署工具 deployer
2020-01-03 16:48 880php部署代码可以使用 https://deployer.or ... -
使用composer 类库 cachetool 清除opcache 的缓存
2020-01-03 16:38 961php的生产服务器上,需要把opche打开。 但有时,会被缓 ... -
laravel容器学习体会
2019-12-31 15:11 654根据文档与实测结果 假设我在app下建一个Services目 ... -
phalcon 自定义超强日志类
2019-12-18 10:00 826phalcon自带的日志文件类,有两个麻烦之处。 1、路径不能 ... -
自定义后台的使用
2019-12-18 05:22 423如果自己写后台,保存用户的表单请求值 所有的情况如下: 1 ... -
phalcon 自定义事件使用的多种方式
2019-12-16 20:43 778方法1:官方文档的方式。 这是控制器: public ... -
phalcon对控制器返回值的使用以输出json
2019-12-16 19:17 816在phalcon里,控制器的Action的方法的返回值没啥用。 ... -
phalcon数据库DB使用实例
2019-12-12 17:12 694整理了一下phalcon的db使用,写了个demo。 ... -
php-redis5.0降级成php-redis4.3
2019-08-22 00:01 889最新版本的php的redis插件,版本是5.0 但是可能会有 ...
相关推荐
1. **安装扩展包**:通常我们可以使用`spatie/laravel-eloquent-has-many-deep`这个扩展包,它为Eloquent提供了对UUID的支持。通过Composer安装: ``` composer require spatie/laravel-eloquent-has-many-deep `...
此外,Eloquent还提供了查询构建器,用于构建和执行SQL查询,以及关系(Relationships)功能,用来处理一对多、一对一、多对多等复杂的数据库关联。 单一状态标记存储(Single State Marking Store)是一种设计模式...
Eloquent-Extended-Cast-Model库正是对这一特性的扩展,它使得开发者可以创建自定义的类型转换器,这些转换器可以处理更复杂的数据格式,如JSON、数组、甚至是其他自定义的序列化和反序列化逻辑。这在处理非标准数据...
例如,如果我们有一个`User`模型,它有一对多的`posts`关系,我们可以通过以下方式获取用户及其文章: ```php $user = User::find(1); foreach ($user->posts as $post) { // ... } ``` 当第一次访问`$user->posts...
- 首先,你需要创建一个基础模型类,通常命名为`BaseModel`,并指定与之关联的数据库表。 - 然后,为每种类型创建一个子模型,如`UserModel`, `AdminModel`等,它们都继承自`BaseModel`。 - 在每个子模型中,可以...
Eloquent ORM使得开发者能够使用PHP类和对象来操作数据库表,大大简化了数据交互的过程。这个压缩包“Laravel开发-eloquent-extended-cast-model .zip”很可能包含了一些关于如何扩展Eloquent模型的自定义类型转换...
通过定义模型类,我们可以定义与数据库表的映射关系,比如表名、主键以及关联等。Eloquent提供了一些预定义的方法,如`save()`, `update()`, `delete()`, `find()`等,使得数据库操作变得非常简洁。 描述中提到的...
【Laravel 开发 - Laravel Eloquent Mysqli】 在 Laravel 框架中,Eloquent ORM 是一个强大的工具,用于处理数据库操作。它提供了一个简洁、优雅的 PHP ActiveRecord 实现,使得开发者可以方便地进行数据库交互。...
以上只是PHP开发中常用类库的一部分,实际开发中还有更多优秀的类库,如Laravel的Eloquent ORM、Guzzle HTTP客户端库等,它们极大地提高了开发效率和代码质量。了解并熟练使用这些类库,将使你的PHP开发工作更加...
ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。 ROS Graph这里翻译成了ROS网络,因为我觉得...
- `hasManyThrough`:定义通过中间表建立的多对多关系。 - `morphOne`, `morphMany`, `morphTo`:支持多态关联。 5. **查询构建器**: - 基于查询构建器,Eloquent提供了链式调用的方法,如`where`, `orWhere`, ...
模型类包含一系列的属性和方法,用于定义与数据库表的关联和操作。通过模型,我们可以执行CRUD(创建、读取、更新、删除)操作,以及更复杂的查询。 "eloquent-sortable"库是基于Eloquent的,它添加了一个特性,使...
此外,Eloquent Search Map还支持对关联模型的搜索。如果你的模型之间有父子关系,可以指定要搜索的关联模型和字段,这样在查询时会同时考虑父模型和子模型的字段。 总的来说,Eloquent Search Map通过提供一个统一...
Eloquent Filter是Laravel社区中广泛使用的一个扩展,它允许我们根据输入的筛选器动态地对Eloquent查询进行过滤,从而实现更加灵活的数据检索功能。本文将深入探讨Laravel Eloquent Filter的相关知识点,帮助开发者...
通过定义一对一、一对多、多对多等关系,可以方便地获取关联数据。例如,定义一个`hasMany`关系: ```php public function posts() { return $this->hasMany(Post::class); } ``` 4. **事件系统**:Eloquent模型...
在Laravel框架中,Eloquent ORM(对象关系映射)是用于数据库操作的强大工具,而“Eloquent State Machine”则是Eloquent模型上的一个扩展,它引入了状态管理的概念,使得对象的状态转换更加有序和可维护。...
5. **使用Eloquent操作数据**: 现在你可以像平常一样使用Eloquent来创建、读取、更新和删除记录,Eloquent会自动处理UUID的生成和验证。 在实际应用中,可能还需要处理UUID与其他系统之间的交互,如API请求或数据...
首先,我们需要安装Jenssegers/Laravel-MongoDB扩展包,这个扩展提供了Eloquent模型对MongoDB的支持。通过Composer可以在项目中添加此依赖: ```bash composer require jenssegers/mongodb ``` 安装完成后,我们...
Laravel官方文档讲解,该资料是一整套视频,需要逐个下载,Eloquent Relationships 表关联