我正在嘗試使用另一個表(個人資料)擴展用戶模型以獲取個人資料圖片、位置等。
我可以重寫使用者模型的 index()
函數來做到這一點嗎?
目前型號代碼:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; protected $fillable = [ 'name', 'email', 'password', 'user_group' ]; protected $hidden = [ 'password', 'remember_token', ]; protected $casts = [ 'email_verified_at' => 'datetime', ]; }
您想要做的是在
User
模型和新的Profile
模型之間建立關係。為此,您首先需要建立一個模型Profile
及其關聯的 Tabbleprofiles
php artisan make:model Profile --migration
在
#的文件database\migrations
中應該有一個名為2022_11_28_223831_create_profiles_table.php
現在您需要新增一個外鍵來指示此設定檔屬於哪個使用者。
現在在您的使用者模型中加入以下函數
在您的個人資料模型中
運行
php artisan migrate
,一切都應該按預期工作如果您想測試關係是否如預期運作,請建立一個新的測試案例
php artisan make:test ProfileUserRelationTest
#在
#tests\Feature\ProfileUserRelationTest.php
現在您可以執行
php artisan test
來查看是否一切正常。小心這會刷新您的資料庫! 所以不要在生產中進行測試。
輸出應該是這樣的
了解有關 Laravel 中關係的更多資訊:https://laravel.com/docs/ 9.x/雄辯關係
了解更多有關遷移的資訊:https://laravel.com/docs/9.x/遷移
替代方案