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