Laravel 5框架学习之Eloquent 关系,laraveleloquent
Laravel 5框架学习之Eloquent 关系,laraveleloquent
一个用户可能有多个文章,一个文章是某个用户书写的,这就是关系。同样文章中可能包含多个 TAG,而一个 TAG 可能关联多个文章。
在项目中,我们已经有了 User.php,也就是用户模型,查看一下,相当简单。我们希望直接使用 $user->articles() 的形式获取全部文章,让我们修改 user 模型:
public function articles() { return $this->hasMany('App\Article'); }
但是我们仅仅完成了关系中的一端,让我们来处理另一端。我们希望的形式是 $article->user() ,让我们修改 article 模型。
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('title'); $table->text('body'); $table->timestamp('published_at'); $table->timestamps(); //生成外键 $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade'); });
因为我们只是在开发阶段,还没有上线运行,我们可以直接修改数据库迁移文件,回滚然后迁移即可,但是如果上线运行的话,应该新建一个迁移。
php artisan migrate:refresh #输出信息 Rolled back: 2015_03_28_050138_create_article_table Rolled back: 2014_10_12_100000_create_password_resets_table Rolled back: 2014_10_12_000000_create_users_table Nothing to rollback. Migrated: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_100000_create_password_resets_table Migrated: 2015_03_28_050138_create_article_table Migrated: 2015_03_28_051200_add_excerpt_to_articels_table
现在让我们使用 tinker 来创建一个用户。
php artisan tinker Psy Shell v0.4.1 (PHP 5.4.16 — cli) by Justin Hileman #下面是执行过程 >>> $user = new App\User; => <App\User #000000007f1ad61a000000006497cc4f> {} >>> $user->name = 'zhang jinglin'; => "zhang jinglin" >>> $user->email = 'zjl@example.com'; => "zjl@example.com" >>> $user->password = bcrypt('pass'); => "$2y$10$Nbl2b9wqd.rXqKEsd3pRSOoIyFAFIhbqf71BufwDfS3Guv21SlEx2" >>> $user->save(); => true >>> App\User::first()->toArray(); => [ "id" => "1", "name" => "zhang jinglin", "email" => "zjl@example.com", "created_at" => "2015-03-31 03:24:55", "updated_at" => "2015-03-31 03:24:55" ] >>>
现在我们需要新发布的文章和用户关联,我们暂时先修改 form_partial.blade.php 来隐藏一个用户id,只是暂时:
复制代码 代码如下:
{{--临时处理--}}
{!! Form::hidden('user_id', 1) !!}
同时要修改模型的 $fillabel 属性,以便我们的 Mass Assisment。
protected $fillable = [ 'title', 'body', 'published_at', 'user_id' //临时设置 ];
OK,添加一个文章。我们使用 tinker 来查看一下。
php artisan tinker Psy 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" => "2015-03-31 08:00:00", "created_at" => "2015-03-31 04:17:58", "updated_at" => "2015-03-31 04:17:58", "excerpt" => null ] #获取用户 >>> $user = App\User::first(); => <App\User #0000000051cbb9d70000000073e11a3e> { id: "1", name: "zhang jinglin", email: "zjl@example.com", created_at: "2015-03-31 03:24:55", updated_at: "2015-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" => "2015-03-31 08:00:00", "created_at" => "2015-03-31 04:17:58", "updated_at" => "2015-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" => "2015-03-31 08:00:00", "created_at" => "2015-03-31 04:17:58", "updated_at" => "2015-03-31 04:17:58", "excerpt" => null ] ] #你只能使用 articles() 来进行下一步的工作,比如下面的查询 $user->articles()->where('title', 'User 1 Article')->get(); #我们也可以通过 article 获取 user >>> $article = App\Article::first(); => <App\Article #0000000051cbb9d60000000073e11a3e> { id: "1", user_id: "1", title: "User 1 Article", body: "User 1 Body", published_at: "2015-03-31 08:00:00", created_at: "2015-03-31 04:17:58", updated_at: "2015-03-31 04:17:58", excerpt: null } >>> $article->user; => <App\User #0000000051cbb92d0000000073e11a3e> { id: "1", name: "zhang jinglin", email: "zjl@example.com", created_at: "2015-03-31 03:24:55", updated_at: "2015-03-31 03:24:55" } >>>
以上所述就是本文的全部内容了,希望大家能够喜欢。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Cet article vous apporte des connaissances pertinentes sur Laravel. Il vous présente principalement l'implémentation du verrouillage optimiste dans le modèle Laravel Eloquent. Il existe des exemples de code. Les amis intéressés peuvent y jeter un œil ci-dessous.

Développement Laravel : Comment utiliser LaravelEloquent pour implémenter des associations polymorphes ? L'association polymorphe est une fonctionnalité importante de Laravel Eloquent, qui permet à un modèle d'établir des relations avec plusieurs modèles différents. Dans les applications pratiques, le traitement de différents types de données est relativement simple et efficace, notamment dans la conception de bases de données. Dans cet article, nous verrons comment implémenter des associations polymorphes à l'aide de Laravel Eloquent. 1. Qu'est-ce qu'une association polymorphe ? Polymorphisme

La conversion d'un tableau en objet à l'aide d'Eloquent dans Laravel nécessite les étapes suivantes : Créer un modèle Eloquent. Utilisez la méthode select d'Eloquent pour obtenir le résultat et le convertir en tableau. Utilisez ArrayObject pour convertir un tableau en objet. Obtient une propriété d'objet pour accéder aux valeurs d'un tableau.

Laravel est un framework PHP populaire qui inclut la puissante bibliothèque ORM (Object Relational Mapping)-LaravelEloquent. Cette bibliothèque est très puissante et peut nous aider à implémenter facilement l'association de modèles, facilitant ainsi la gestion et l'interrogation des données. Mais de nombreux développeurs ne savent pas comment utiliser Laravel Eloquent pour implémenter l'association de modèles. Dans cet article, je vais vous présenter comment implémenter l'association de modèles à l'aide de Laravel Eloquent. 1. Laravel

Développement Laravel : Comment construire un modèle de base de données en utilisant LaravelEloquent ? Laravel est un framework PHP populaire qui fournit un outil d'exploitation de base de données puissant et facile à utiliser - Laravel Eloquent. Dans le passé, l'utilisation de PHP pour les opérations de base de données nécessitait inévitablement l'écriture d'un grand nombre d'instructions SQL longues et de codes fastidieux. Cependant, l'utilisation de Laravel Eloquent peut facilement créer des modèles de base de données et réaliser un développement et une maintenance rapides. Cet article

Alors que les besoins des développeurs en matière d'interaction avec les données continuent de croître, l'ORM est devenu un élément indispensable du développement moderne. Il peut masquer les opérations de base de données en arrière-plan et fournir une API simplifiée pour les opérations CRUD. Parmi ces bibliothèques ORM, Eloquent a attiré l'attention de nombreux développeurs car elle a été largement utilisée dans le framework Laravel. Dans PHP 8.0, Eloquent se présente sous la forme d'une bibliothèque d'extensions autonome et peut désormais être utilisée dans vos projets. Dans cet article, nous explorerons Eloq

Laravel est un framework Web PHP populaire en raison de sa simplicité et de sa facilité d'utilisation. Le framework Laravel est connu pour son excellente implémentation d'EloquentORM, un mappage Object-RelationalMini qui prend en charge l'utilisation de PHP pour définir des modèles de base de données et fournit une interaction facile avec la base de données basée sur ces modèles. Cet article détaillera comment créer un modèle à l'aide de Laravel Eloquent pour interagir avec la base de données de manière rapide et fiable.

ThinkPHP6 est un framework PHP très populaire, et Laravel est un autre framework PHP populaire. Les deux frameworks ont leurs propres fonctionnalités et avantages, mais le moteur EloquentORM (Object Relational Mapping) de Laravel est connu comme « le meilleur ORM du monde PHP ». Que devons-nous faire si nous voulons utiliser EloquentORM de Laravel lors de l'utilisation de ThinkPHP6 ? Discutons de ThinkPHP en détail ci-dessous
