亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

Laravel 5框架學習之Eloquent 關系

2024-05-04 23:34:06
字體:
來源:轉載
供稿:網友

Eloquent是Laravel的原始ActiveRecord是實現的,建立在Laravel的Fluent Query Builder之上的,所以Eloquent類和Fluent類是一樣的,能實現復雜的SQL語句和非常直觀表達出的表與表之間的關系

一個用戶可能有多個文章,一個文章是某個用戶書寫的,這就是關系。同樣文章中可能包含多個 TAG,而一個 TAG 可能關聯多個文章。

在項目中,我們已經有了 User.php,也就是用戶模型,查看一下,相當簡單。我們希望直接使用 $user->articles() 的形式獲取全部文章,讓我們修改 user 模型:

 

 
  1. public function articles() { 
  2. return $this->hasMany('App/Article'); 

但是我們僅僅完成了關系中的一端,讓我們來處理另一端。我們希望的形式是 $article->user() ,讓我們修改 article 模型。

 

 
  1. public function user() { 
  2. return $this->belongsTo('App/User'); 

在我們的數據庫中,文章模型沒有用戶的外鍵,我們需要設置,修改 create_article_table.php

 

 
  1. Schema::create('articles'function(Blueprint $table
  2. $table->increments('id'); 
  3. //指定外鍵列 
  4. $table->integer('user_id')->unsigned(); 
  5. $table->string('title'); 
  6. $table->text('body'); 
  7. $table->timestamp('published_at'); 
  8. $table->timestamps(); 
  9.  
  10. //生成外鍵 
  11. $table->foreign('user_id'
  12. ->references('id'
  13. ->on('users'
  14. ->onDelete('cascade'); 
  15. }); 

因為我們只是在開發階段,還沒有上線運行,我們可以直接修改數據庫遷移文件,回滾然后遷移即可,但是如果上線運行的話,應該新建一個遷移。

 

 
  1. php artisan migrate:refresh 
  2.  
  3. #輸出信息 
  4. Rolled back: 2015_03_28_050138_create_article_table 
  5. Rolled back: 2014_10_12_100000_create_password_resets_table 
  6. Rolled back: 2014_10_12_000000_create_users_table 
  7. Nothing to rollback. 
  8. Migrated: 2014_10_12_000000_create_users_table 
  9. Migrated: 2014_10_12_100000_create_password_resets_table 
  10. Migrated: 2015_03_28_050138_create_article_table 
  11. Migrated: 2015_03_28_051200_add_excerpt_to_articels_table 

現在讓我們使用 tinker 來創建一個用戶。

 

 
  1. php artisan tinker 
  2. Psy Shell v0.4.1 (PHP 5.4.16 — cli) by Justin Hileman 
  3.  
  4. #下面是執行過程 
  5. >>> $user = new App/User; 
  6. => <App/User #000000007f1ad61a000000006497cc4f> {} 
  7. >>> $user->name = 'zhang jinglin'
  8. => "zhang jinglin" 
  9. >>> $user->email = 'zjl@example.com'
  10. => "zjl@example.com" 
  11. >>> $user->password = bcrypt('pass'); 
  12. => "$2y$10$Nbl2b9wqd.rXqKEsd3pRSOoIyFAFIhbqf71BufwDfS3Guv21SlEx2" 
  13. >>> $user->save(); 
  14. => true 
  15. >>> App/User::first()->toArray(); 
  16. => [ 
  17. "id" => "1"
  18. "name" => "zhang jinglin"
  19. "email" => "zjl@example.com"
  20. "created_at" => "2015-03-31 03:24:55"
  21. "updated_at" => "2015-03-31 03:24:55" 
  22. >>>  

現在我們需要新發布的文章和用戶關聯,我們暫時先修改 form_partial.blade.php 來隱藏一個用戶id,只是暫時:

復制代碼代碼如下:

{{--臨時處理--}}

{!! Form::hidden('user_id', 1) !!}

同時要修改模型的 $fillabel 屬性,以便我們的 Mass Assisment。

 

 
  1. protected $fillable = [ 
  2. 'title'
  3. 'body'
  4. 'published_at'
  5. 'user_id' //臨時設置 
  6. ]; 

OK,添加一個文章。我們使用 tinker 來查看一下。

 

 
  1. php artisan tinker 
  2. Psy Shell v0.4.1 (PHP 5.4.16 — cli) by Justin Hileman 
  3. >>> App/Article::first()->toArray(); 
  4. => [ 
  5. "id" => "1"
  6. "user_id" => "1"
  7. "title" => "User 1 Article"
  8. "body" => "User 1 Body"
  9. "published_at" => "2015-03-31 08:00:00"
  10. "created_at" => "2015-03-31 04:17:58"
  11. "updated_at" => "2015-03-31 04:17:58"
  12. "excerpt" => null 
  13.  
  14. #獲取用戶 
  15. >>> $user = App/User::first(); 
  16. => <App/User #0000000051cbb9d70000000073e11a3e> { 
  17. id: "1"
  18. name: "zhang jinglin"
  19. email: "zjl@example.com"
  20. created_at: "2015-03-31 03:24:55"
  21. updated_at: "2015-03-31 03:24:55" 
  22.  
  23. #獲取用戶文章 
  24. >>> $user->articles()->toArray(); 
  25. BadMethodCallException with message 'Call to undefined method Illuminate/Database/Query/Builder::toArray()' 
  26. >>> $user->articles->toArray(); 
  27. => [ 
  28. "id" => "1"
  29. "user_id" => "1"
  30. "title" => "User 1 Article"
  31. "body" => "User 1 Body"
  32. "published_at" => "2015-03-31 08:00:00"
  33. "created_at" => "2015-03-31 04:17:58"
  34. "updated_at" => "2015-03-31 04:17:58"
  35. "excerpt" => null 
  36.  
  37. #為什么使用 $user->articles 而不是 #user->articles()? 
  38. #事實上,$user->articles()返回的是關系,如果你想用 articles() 你需要這樣用 
  39. >>> $user->articles()->get()->toArray(); 
  40. => [ 
  41. "id" => "1"
  42. "user_id" => "1"
  43. "title" => "User 1 Article"
  44. "body" => "User 1 Body"
  45. "published_at" => "2015-03-31 08:00:00"
  46. "created_at" => "2015-03-31 04:17:58"
  47. "updated_at" => "2015-03-31 04:17:58"
  48. "excerpt" => null 
  49.  
  50. #你只能使用 articles() 來進行下一步的工作,比如下面的查詢 
  51.  
  52. $user->articles()->where('title''User 1 Article')->get(); 
  53.  
  54. #我們也可以通過 article 獲取 user 
  55.  
  56. >>> $article = App/Article::first(); 
  57. => <App/Article #0000000051cbb9d60000000073e11a3e> { 
  58. id: "1"
  59. user_id: "1"
  60. title: "User 1 Article"
  61. body: "User 1 Body"
  62. published_at: "2015-03-31 08:00:00"
  63. created_at: "2015-03-31 04:17:58"
  64. updated_at: "2015-03-31 04:17:58"
  65. excerpt: null 
  66. >>> $article->user; 
  67. => <App/User #0000000051cbb92d0000000073e11a3e> { 
  68. id: "1"
  69. name: "zhang jinglin"
  70. email: "zjl@example.com"
  71. created_at: "2015-03-31 03:24:55"
  72. updated_at: "2015-03-31 03:24:55" 
  73. >>>  

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产69精品久久久久9999| 国产精品免费在线免费| 国产日韩精品在线观看| 欧美日韩激情视频8区| 久久久亚洲国产| 久久国产加勒比精品无码| 日韩欧美亚洲范冰冰与中字| 秋霞av国产精品一区| 成人信息集中地欧美| 久久久久免费精品国产| 午夜精品蜜臀一区二区三区免费| 久久成人在线视频| 国产精品中文字幕在线| 国产精品劲爆视频| 亚洲成年网站在线观看| 国产精品美女网站| 欧美日韩中文在线观看| 国产精品一区二区久久国产| 国产成人激情视频| 国产精品久久在线观看| 国产一区私人高清影院| 亚洲第一福利在线观看| 日韩中文在线观看| 中文字幕欧美国内| 亚洲精品国精品久久99热| 亚洲精品第一国产综合精品| 国产精品视频区1| 色琪琪综合男人的天堂aⅴ视频| 欧美亚洲另类激情另类| 自拍视频国产精品| 欧美日韩国产激情| 欧美电影电视剧在线观看| 国产亚洲一区精品| 亚洲999一在线观看www| 国产不卡av在线| 亚洲欧美日韩一区二区在线| 欧美成人精品在线观看| 成人性生交大片免费观看嘿嘿视频| 国产免费一区二区三区香蕉精| 日韩av片免费在线观看| 欧洲精品在线视频| 91精品国产沙发| 久久精品91久久久久久再现| 国产亚洲欧洲高清| 91久久精品一区| 亚洲国产古装精品网站| 国产日韩在线一区| 久久精品国产99国产精品澳门| 亚洲成人国产精品| 都市激情亚洲色图| 亚洲人高潮女人毛茸茸| 日韩网站免费观看高清| 久久精品久久精品亚洲人| 久久国产精品首页| 另类少妇人与禽zozz0性伦| 欧美一级电影免费在线观看| 九九久久综合网站| 欧美性猛交99久久久久99按摩| 日韩精品免费综合视频在线播放| x99av成人免费| 色偷偷亚洲男人天堂| 亚洲人成在线观看| 黑人巨大精品欧美一区二区一视频| 国产午夜精品免费一区二区三区| 久久久久久久久久国产| 国内精品一区二区三区四区| 日韩在线欧美在线| 亚洲a一级视频| 亚洲精品视频在线观看视频| 欧美日韩免费看| 91伊人影院在线播放| 红桃视频成人在线观看| 亚洲电影免费在线观看| 久久网福利资源网站| 国内免费精品永久在线视频| 日本精品一区二区三区在线| 欧美性猛交xxxx| 国产成人久久精品| 亚洲成年网站在线观看| 欧美日韩中文字幕在线视频| 亚洲激情成人网| 欧美极品少妇与黑人| 国产精品美女久久| 17婷婷久久www| 国内精品久久久久久中文字幕| 国产亚洲免费的视频看| www.亚洲免费视频| 九九久久综合网站| 日韩av最新在线| 国产精自产拍久久久久久| 九九热这里只有精品免费看| 欧美午夜女人视频在线| 一区二区欧美日韩视频| 久久综合网hezyo| 粉嫩av一区二区三区免费野| 欧美性猛交xxxx乱大交3| 韩国国内大量揄拍精品视频| 国产精品免费一区二区三区都可以| 成人激情在线观看| 国产亚洲一级高清| 久久久在线视频| 精品久久久久久亚洲精品| 国精产品一区一区三区有限在线| 欧美成人黑人xx视频免费观看| 欧美黄色片视频| 亚洲热线99精品视频| 91热福利电影| 色妞在线综合亚洲欧美| 久久精品99久久久久久久久| 亚洲va久久久噜噜噜| 欧美人与物videos| 午夜精品一区二区三区在线播放| 久久久久久久久久久免费精品| 亚洲欧美日韩成人| 中文字幕免费精品一区高清| 不卡av在线网站| 高清亚洲成在人网站天堂| 欧美一区视频在线| 亚洲网站在线播放| 97超碰蝌蚪网人人做人人爽| 国产精品精品一区二区三区午夜版| 91免费精品视频| 日韩在线观看免费高清| 国产精品美女在线| 精品亚洲一区二区三区四区五区| 欧美在线一区二区视频| 国产综合视频在线观看| 成人在线激情视频| 欧美激情啊啊啊| 中文字幕日韩欧美精品在线观看| 欧美电影免费在线观看| 欧美日韩在线一区| 欧美午夜精品久久久久久浪潮| 午夜欧美大片免费观看| 国产精品午夜国产小视频| 日韩中文字幕在线播放| 日韩一区二区三区在线播放| 中文字幕日韩在线视频| xvideos亚洲人网站| 91免费综合在线| 欧美在线视频网| 欧美性生交xxxxx久久久| 91精品久久久久久综合乱菊| 日韩中文视频免费在线观看| 国产精品旅馆在线| 亚洲经典中文字幕| 欧美精品videossex88| 欧美久久久精品| 国产精品一区二区3区| 亚洲国产另类 国产精品国产免费| 亚洲国产精品成人va在线观看| 日韩国产激情在线| 国产v综合ⅴ日韩v欧美大片| 国产亚洲视频在线观看| 亚洲一二三在线| 日本高清不卡的在线| 中文字幕自拍vr一区二区三区| 久久久人成影片一区二区三区观看| 国产一区二区欧美日韩| 国产在线视频91| 55夜色66夜色国产精品视频| 久久精品99久久久久久久久| 一区二区欧美日韩视频| 91在线|亚洲|