Eloquent
モデルを調べて、他のモデルとの関係を見つけようとしています。問題は、関係が単純に単一のメソッドとして定義され、関係の中心的なインデックスが存在しないことです。
public function posts()
{
return $this->hasMany('Post');
}
すべてのリレーションを検査するには、メソッドのリストを抽出し、 から継承されたものを取り出し、Eloquent
それぞれを実行し、戻り値の型を確認する必要があります。
$all = get_class_methods($model);
$inherited = get_class_methods('Eloquent');
$unique = array_diff($all, $inherited);
foreach($unique AS $method)
{
$relation = $model->$method();
if(is_a($relation, 'Illuminate\Database\Eloquent\Relations\Relation'))
{
//... this is a relation, do something with it
}
}
言うまでもなく、これは非常に危険です。この種の検査を別のより安全な方法で行う方法はありますか?