LaravelにおけるAdonis HasOneリレーションシップの使用方法


まず、HasOneリレーションシップを定義するために、関連するモデル間でメソッドを設定します。例えば、UserモデルとProfileモデルの間にHasOneリレーションシップを設定する場合、次のようなコードを記述します。

// Userモデル
class User extends Model {
  profile() {
    return this.hasOne('App/Models/Profile')
  }
}
// Profileモデル
class Profile extends Model {
  user() {
    return this.belongsTo('App/Models/User')
  }
}

上記の例では、Userモデルのprofile()メソッドはHasOneリレーションシップを定義し、Profileモデルのuser()メソッドは逆のリレーションシップを定義しています。

これにより、UserモデルのインスタンスからProfileモデルにアクセスすることができます。以下はその例です。

const user = await User.find(1)
const profile = await user.profile().fetch()
console.log(profile)

上記の例では、Userモデルのインスタンスから関連するProfileモデルにアクセスしています。fetch()メソッドを使用することで、関連するモデルのデータを取得できます。

また、HasOneリレーションシップでは、関連するモデルにデータを関連付けることもできます。以下はその例です。

const user = await User.find(1)
const profile = new Profile()
profile.title = 'Example Title'
await user.profile().save(profile)

上記の例では、Userモデルのインスタンスに関連するProfileモデルを作成し、データを設定しています。save()メソッドを使用することで、関連するモデルを保存できます。

以上がAdonis HasOneリレーションシップの使用方法とコード例です。この機能を使用することで、データベースの関連性を簡単に定義し、関連するモデル間のデータの取得や保存を行うことができます。