web-dev-qa-db-ja.com

雄弁-未定義の関係への呼び出し

sersテーブルとpermissionsテーブルがあります。これは多対多の関係なので、sers_permissionsテーブルとser_idmodule_permission_id列もあります。

ユーザーモデルには次の関係があります。

public function permissions()
{
    return $this->belongsToMany(Permission::class, 'users_permissions', 'user_id', 'module_permission_id');
}

クエリを実行すると、結果に空のアクセス許可配列が含まれます。

User::with('permissions');

Withでクエリをエコーすると、エラーが発生します:モデル[App\Models\User]の未定義の関係[]の呼び出し

User::with(['permissions', function($q) {
            echo $q->toSql();  
            die();
        }]);

クエリの残りの部分は機能します。失敗しているアクセス許可を取得しようとしているだけです。

3
Kieran Chadwick

User :: with( 'permissions')-> get()の後に-> get()を忘れただけかもしれません。

https://laravel.com/docs/5.0/eloquent#eager-loading

1
vincentLg

私の場合、それはキャメルケースとsnake_caseに関連するコーディング規約の問題でした。モデルには

public function getPermissions()

クエリには

User::with(['get_permissions'])

これをに変更したとき

User::with(['getPermissions'])

Laravelの方法は、代わりにsnake_caseを使用することになると思いますが、それは機能し始めました。

SymfonyやAngularJsのようなフレームワークには、スネークケースとキャメルケースのどこかにパラメーターを書く必要があるという混合規則があるので、これは数日間私を混乱させました。 Laravelサイトでこれをどのように処理するかについてのドキュメントが見つからなかったので、ストレートウェイで試してみましたが、ここではそうだったようです:)

0
PHZ.fi-Pharazon