本系列文的環境狀態,可點擊此連結後花園環境參考
在 1 對 1 的 Part 1 中,我們建立了關聯,但要怎麼確定是否有連結呢?
今天就來寫個 controller 測試看看吧!
在 Terminal 輸入指令
$ php artisan make:controller OneToOneController
路徑:app/Http/Controllers/OneToOneController.php
寫入程式碼
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Flower;
class OneToOneController extends Controller
{
public function OneToOne (Request $request)
{
$flower = Flower::find(3);
$flower->profile()->firstOrCreate
(
[
'flower_id'=>$flower->id
],
[
'personality'=>'cute'
]
);
dd($flower->profile);
}
}
在文末會有較詳細的程式碼解析
路徑:BackGarden/routes/api.php
<?php
Route::post('/flower/one','OneToOneController@OneToOne');
在 POSTMAN 設定 POST 並貼入 api 爲 BackGarden.test/api/flower/one
畫面有兩張資料庫的 Table 及 OneToOneController 的內容物,分別是 flowers 跟 profiles ,藉由 flower_id 連結彼此的關係,形成相依性。
Flower::find(3)
find() 方法透過 $primaryKey 屬性查找 model。
如果沒有設置,會預設是 id。如果您進行了設置。
PS:可使用此指令進行自定義主鍵名稱 public $primarykey = 'Love_id';
firstOrCreate()
dd()
代表「Dump and Die」,輸出結果並立即停止該過程,藉此生成較結構化,易於閱讀的變量結果。
可以在瀏覽器中顯示變量,一般是拿來除錯用的。
參考連結:
❁ Laravel 官方-Eloquent: Relationships
❁ Charleen 大 - Laravel新手基礎訓-Eloquent: Relationships-One to One
❁ Basics of Model::find()
❁ firstOrCreate、firstOrNew、updateOrCreate 方法使用
❁ 除錯程式碼之 dd VS var_dump VS print_r ?
❁ A Better dd() for Your TDD