我認為我對 Laravel 雄辯的關系(版本 7)有誤解。主要問題是:它們需要 MySQL 外鍵才能工作嗎?雙向都需要 FK 嗎?情況:我有用戶,我有帳戶。每個用戶有一個帳戶,每個帳戶屬于一個用戶。用戶遷移:class CreateUsersTable extends Migration{ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamp('updated_at'); $table->timestamp('email_verified_at')->nullable(); $table->timestamp('created_at')->useCurrent(); }); }}賬戶遷移:class CreateAccountsTable extends Migration{ public function up() { Schema::create('accounts', function (Blueprint $table) { $table->id('owner'); $table->bigInteger('currency'); $table->integer('currencyGenerators'); $table->foreign('owner')->references('id')->on('users'); $table->timestamp('updated_at'); $table->dateTime('lastResourceUpdate')->nullable()->useCurrent(); $table->timestamp('created_at')->useCurrent(); }); }}因此,我有一個引用 users.id 的 MySQL FKcounts.owner。用戶型號:class User extends Authenticatable{ ... public function account(): HasOne { return $this->hasOne(Account::class, 'owner'); }}賬戶模型:class Account extends Model{ ... public function user(): BelongsTo { return $this->belongsTo(User::class, 'id'); }}我可以檢索用戶的帳戶:$users = User::all();dd($users[0]);App\User {#1030 ▼#primaryKey: "id"...#relations: array:1 [▼"account" => App\Account {#1185 ?}]...但我無法獲取該帳戶的用戶:$accounts = Account::all();dd($accounts[0]);App\Account {#1241 ▼ #primaryKey: "owner" ... #relations: array:1 [▼ "user" => null ] ...我的用戶表中是否需要一個 FK 來引用帳戶的所有者?(因為 Laravel 的文檔return $this->hasOne('App\Phone', 'foreign_key');在https://laravel.com/docs/7.x/eloquent-relationships#introduction中提到。或者我這里的問題是什么?
- 1 回答
- 0 關注
- 182 瀏覽
添加回答
舉報
0/150
提交
取消