close

今天把Eloquent Object和Query Builder的Object搞混了,繞了快一個小時。

一開始使用

下面為Model Post 和 User

User Class的 posts() method

就這樣,我以為我可以透過 $post->user->name 取得name的資料,沒有想到居然不行,

我想說laravel的ORM不是很強大嗎? 怎麼可能會抓不到user,

Debug步驟:

Step. 1 先找找看foreign key是否是錯誤的,沒有匹配到。

Step. 2 看看model的Name有沒有打錯

Step. 3 重新複習official document,看看有沒有哪裡理解錯誤。

Step. 4 上stack Overflow看看到底哪裡出問題。

後來找到下面這篇文章

https://stackoverflow.com/questions/42313991/category-relationship-in-laravel-undefined-property-stdclass

然後將撈取post的方式改為

 

Before

 

After

 

看出端倪了吧,原來是自己呆呆的使用query builder還妄想要透過query builder來達到Eloquent ORM的效果

兩者是完全不一樣的東西。

 

想說tutorial看這麼多應該沒問題了,看來有些事情還是要踩一踩才知道問題點,才能釐清更多觀念。 

2019/03/04

 

另外發現類似的概念 StackOverFlow

https://stackoverflow.com/questions/28223289/difference-between-method-calls-model-relation-and-model-relation

連結中主要講述$user->post 和  $user->post()的差異

$user->post   相等於  $user->post()->get()

前者已經取出資料,後者為eloquent model還可以繼續做where() orderBy等資料庫操作(DML)語句,進行query。

 

 

arrow
arrow
    全站熱搜

    蕭瑞文 發表在 痞客邦 留言(0) 人氣()