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" } >>>
以上所述就是本文的全部内容了,希望大家能够喜欢。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Dieser Artikel bringt Ihnen relevantes Wissen über Laravel. Er stellt Ihnen hauptsächlich die Implementierung des optimistischen Sperrens im Laravel Eloquent-Modell vor. Ich hoffe, dass es für Sie hilfreich ist.

Laravel-Entwicklung: Wie kann man mit LaravelEloquent polymorphe Assoziationen implementieren? Die polymorphe Assoziation ist ein wichtiges Merkmal von Laravel Eloquent, das es einem Modell ermöglicht, Beziehungen zu mehreren verschiedenen Modellen aufzubauen. In praktischen Anwendungen ist die Verarbeitung verschiedener Datentypen relativ einfach und effizient, insbesondere im Datenbankdesign. In diesem Artikel besprechen wir, wie man polymorphe Assoziationen mit Laravel Eloquent implementiert. 1. Was ist eine polymorphe Assoziation? Polymorphismus

Das Konvertieren eines Arrays in ein Objekt mit Eloquent in Laravel erfordert die folgenden Schritte: Erstellen Sie ein Eloquent-Modell. Verwenden Sie die Select-Methode von Eloquent, um das Ergebnis abzurufen und es in ein Array zu konvertieren. Verwenden Sie ArrayObject, um ein Array in ein Objekt umzuwandeln. Ruft eine Objekteigenschaft ab, um auf die Werte eines Arrays zuzugreifen.

Laravel ist ein beliebtes PHP-Framework, das die leistungsstarke ORM-Bibliothek (Object Relational Mapping) LaravelEloquent enthält. Diese Bibliothek ist sehr leistungsstark und kann uns dabei helfen, die Modellzuordnung einfach zu implementieren und so die Verwaltung und Abfrage von Daten zu vereinfachen. Viele Entwickler wissen jedoch nicht, wie sie mit Laravel Eloquent die Modellzuordnung implementieren können. In diesem Artikel werde ich vorstellen, wie man die Modellzuordnung mit Laravel Eloquent implementiert. 1. Laravel

Laravel-Entwicklung: Wie erstellt man ein Datenbankmodell mit LaravelEloquent? Laravel ist ein beliebtes PHP-Framework, das ein leistungsstarkes und benutzerfreundliches Tool für den Datenbankbetrieb bereitstellt – Laravel Eloquent. In der Vergangenheit erforderte die Verwendung von PHP zur Durchführung von Datenbankoperationen zwangsläufig das Schreiben einer großen Anzahl langwieriger SQL-Anweisungen und umständlicher Codes. Mit Laravel Eloquent können jedoch problemlos Datenbankmodelle erstellt und eine schnelle Entwicklung und Wartung erreicht werden. Dieser Artikel

Laravel ist ein beliebtes PHP-Webframework, das aufgrund seiner Einfachheit und Benutzerfreundlichkeit beliebt ist. Das Laravel-Framework ist für seine hervorragende Implementierung von EloquentORM bekannt, einem Object-RelationalMini-Mapping, das die Verwendung von PHP zum Definieren von Datenbankmodellen unterstützt und eine einfache Datenbankinteraktion basierend auf diesen Modellen ermöglicht. In diesem Artikel wird detailliert beschrieben, wie Sie mit Laravel Eloquent ein Modell erstellen, um schnell und zuverlässig mit der Datenbank zu interagieren.

Da der Bedarf der Entwickler an Dateninteraktion immer weiter wächst, ist ORM zu einem unverzichtbaren Bestandteil der modernen Entwicklung geworden. Es kann Datenbankvorgänge im Hintergrund verbergen und eine vereinfachte API für CRUD-Vorgänge bereitstellen. Unter diesen ORM-Bibliotheken hat Eloquent die Aufmerksamkeit vieler Entwickler auf sich gezogen, da sie im Laravel-Framework weit verbreitet ist. In PHP 8.0 ist Eloquent eine eigenständige Erweiterungsbibliothek und kann jetzt in Ihren Projekten verwendet werden. In diesem Artikel werden wir Eloq untersuchen

ThinkPHP6 ist ein sehr beliebtes PHP-Framework und Laravel ist ein weiteres beliebtes PHP-Framework. Beide Frameworks haben ihre eigenen Funktionen und Vorteile, aber die EloquentORM-Engine (Object Relational Mapping) von Laravel gilt als „das beste ORM in der PHP-Welt“. Was sollen wir tun, wenn wir EloquentORM von Laravel bei Verwendung von ThinkPHP6 verwenden möchten? Lassen Sie uns ThinkPHP im Folgenden ausführlich besprechen
