1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Laravel 5 基础(十一)- Eloquent 关系

Laravel 5 基础(十一)- Eloquent 关系

时间:2023-07-03 05:59:39

相关推荐

Laravel 5 基础(十一)- Eloquent 关系

后端开发|php教程

quot,gt,User,Article,39

后端开发-php教程

一个用户可能有多个文章,一个文章是某个用户书写的,这就是关系。同样文章中可能包含多个 TAG,而一个 TAG 可能关联多个文章。

安卓刷圈圈源码,英文版vscode怎么预览,ubuntu gpu监视,tomcat入门的书,腋窝爬虫子,php wwwroot,鼓楼区企业seo是什么lzw

在项目中,我们已经有了User.php,也就是用户模型,查看一下,相当简单。我们希望直接使用$user->articles()的形式获取全部文章,让我们修改 user 模型:

javascrip特效源码,vscode侧边栏菜单,ubuntu板子分区,本地如何启动tomcat,图书管理系统sqlite3,爬虫投资,php5 sqlite,招远谷歌seo营销公司,微赚联盟网站源码,html游戏网页模板lzw

public function articles() { return $this->hasMany(App\Article); }

但是我们仅仅完成了关系中的一端,让我们来处理另一端。我们希望的形式是$article->user(),让我们修改 article 模型。

库存管理 系统 源码,vscode-remote,ubuntu安装时设置分辨率,tomcat7.03.2,sqlite 前100笔,手机看网站视频插件,前端自适应框架有哪些,用什么去除地上爬虫,php 调用c的接口,seo技术专业,企业手机网站制作,中秋节祝福语网页,vb的模板lzw

public function user() { return $this->belongsTo(App\User); }

在我们的数据库中,文章模型没有用户的外键,我们需要设置,修改create_article_table.php

Schema::create(articles, function(Blueprint $table){$table->increments(id); //指定外键列 $table->integer(user_id)->unsigned(); $table->string( itle); $table->text(ody); $table->timestamp(published_at);$table->timestamps(); //生成外键 $table->foreign(user_id)->references(id)->on(users)->onDelete(cascade);});

因为我们只是在开发阶段,还没有上线运行,我们可以直接修改数据库迁移文件,回滚然后迁移即可,但是如果上线运行的话,应该新建一个迁移。

php artisan migrate:refresh#输出信息Rolled back: _03_28_050138_create_article_tableRolled back: _10_12_100000_create_password_resets_tableRolled back: _10_12_000000_create_users_tableNothing to rollback.Migrated: _10_12_000000_create_users_tableMigrated: _10_12_100000_create_password_resets_tableMigrated: _03_28_050138_create_article_tableMigrated: _03_28_051200_add_excerpt_to_articels_table

现在让我们使用tinker来创建一个用户。

php artisan tinkerPsy Shell v0.4.1 (PHP 5.4.16 — cli) by Justin Hileman#下面是执行过程>>> $user = new App\User;=> {}>>> $user->name = zhang jinglin;=> "zhang jinglin">>> $user->email = zjl@;=> "zjl@">>> $user->password = bcrypt(pass);=> "$2y$10$Nbl2b9wqd.rXqKEsd3pRSOoIyFAFIhbqf71BufwDfS3Guv21SlEx2">>> $user->save();=> true>>> App\User::first()->toArray();=> [ "id" => "1", "name" => "zhang jinglin", "email"=> "zjl@", "created_at" => "-03-31 03:24:55", "updated_at" => "-03-31 03:24:55" ]>>>

现在我们需要新发布的文章和用户关联,我们暂时先修改form_partial.blade.php来隐藏一个用户id,只是暂时:

{{--临时处理--}}{!! Form::hidden(user_id, 1) !!}

同时要修改模型的$fillabel属性,以便我们的 Mass Assisment。

protected $fillable = [ itle, ody, published_at, user_id //临时设置 ];

OK,添加一个文章。我们使用tinker来查看一下。

php artisan tinkerPsy Shell v0.4.1 (PHP 5.4.16 — cli) by Justin Hileman>>> App\Article::first()->toArray();=> [ "id" => "1", "user_id"=> "1", "title" => "User 1 Article", "body" => "User 1 Body", "published_at" => "-03-31 08:00:00", "created_at" => "-03-31 04:17:58", "updated_at" => "-03-31 04:17:58", "excerpt"=> null ]#获取用户>>> $user = App\User::first();=> { id: "1", name: "zhang jinglin", email: "zjl@", created_at: "-03-31 03:24:55", updated_at: "-03-31 03:24:55" }#获取用户文章>>> $user->articles()->toArray();BadMethodCallException with message Call to undefined method Illuminate\Database\Query\Builder::toArray()>>> $user->articles->toArray();=> [ [ "id" => "1", "user_id"=> "1", "title" => "User 1 Article", "body" => "User 1 Body", "published_at" => "-03-31 08:00:00", "created_at" => "-03-31 04:17:58", "updated_at" => "-03-31 04:17:58", "excerpt"=> null ] ] #为什么使用 $user->articles 而不是 #user->articles()?#事实上,$user->articles()返回的是关系,如果你想用 articles() 你需要这样用>>> $user->articles()->get()->toArray();=> [ [ "id" => "1", "user_id"=> "1", "title" => "User 1 Article", "body" => "User 1 Body", "published_at" => "-03-31 08:00:00", "created_at" => "-03-31 04:17:58", "updated_at" => "-03-31 04:17:58", "excerpt"=> null ] ] #你只能使用 articles() 来进行下一步的工作,比如下面的查询$user->articles()->where( itle, User 1 Article)->get();#我们也可以通过 article 获取 user>>> $article = App\Article::first();=> { id: "1", user_id: "1", title: "User 1 Article", body: "User 1 Body", published_at: "-03-31 08:00:00", created_at: "-03-31 04:17:58", updated_at: "-03-31 04:17:58", excerpt: null }>>> $article->user;=> { id: "1", name: "zhang jinglin", email: "zjl@", created_at: "-03-31 03:24:55", updated_at: "-03-31 03:24:55" }>>>

以上就介绍了Laravel 5 基础(十一)- Eloquent 关系,包括了方面的内容,希望对PHP教学有兴趣的朋友有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。