2017-05-13 8 views
0

を複数の値に使用できるかどうかを知りたい場合は、Laravelに複数の値が含まれています

たとえば、のは、私は次のようpermsテーブルがあるとしましょう:

TABLE `perms` (
    `id` int(11) NOT NULL, 
    `subject` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `action` varchar(255) COLLATE utf8_unicode_ci NOT NULL 
) 

例行:

INSERT INTO `perms` (`id`, `subject`, `action`) VALUES 
    (1, 'Product', 'Create'), 
    (2, 'Product', 'Read'), 
    (3, 'Product', 'Update'), 
    (4, 'Product', 'Delete'); 

私のユーザーは、ユーザーがいずれかを有することができるusers_permsテーブルとbelongsToMany関係を持っています番号はpermsです。

ユーザーがsubjectactionを含むパーマネントを持っているかどうかを確認したいと思います。だから、私はユーザーがCreateProductへのパーマを持っているかどうかをチェックしたいと思います。ただactionチェックするとき

は今、次のコードは動作します:

$action = 'Create'; 
    $user->perms->contains('action', $action); // true if they have ANY Create action perm 

をしかし、ちょうどactionチェックするだけでは十分ではないので、私は、これはあまりにもsubjectをチェックする必要があります。だから私は次のようなものが必要です:

$subject = 'Product'; 
    $action = 'Create'; 
    $user->perms->contains([ 
    ['subject', $subject], 
    ['action', $action], 
    ]); 

どうすればいいですか?

答えて

0

これは動作するはずです:

$user->perms->contains(function ($val, $key) use ($subject, $action) { 
    return $val->subject == $subject && $val->action == $action; 
}); 
関連する問題