मैं विवरण पृष्ठ में हूं जिसमें des_id है, मुझे सभी उपयोगकर्ताओं को विवरण des_id द्वारा प्राप्त करने की आवश्यकता है और यदि उनके पास रोल स्टाफ है।

$asignTo=Contracts::find($id)
   ->where('contracts.id',$id)
   ->join('users','contracts.condesid','users.des_id')
   ->join('role_user',function($join){
      $join->on('role_user.role_id', 3);
   })
   ->select('users.*')
   ->get();

यह काम नहीं करता मुझे देता है:

SQLSTATE [42S22]: कॉलम नहीं मिला: 1054 अज्ञात कॉलम '3' 'ऑन' में क्लॉज' (एसक्यूएल: users चुनें। * contracts से इनर जॉइन users ऑन contracts.condesid = users.des_id इनर जॉइन role_user ऑन role_user.role_id = 3 जहां contracts.id = 8)

लेकिन अगर मैंने नीचे दिए गए कोड का उपयोग किया है, तो यह मुझे केवल des_id. के बिना रोल स्टाफ वाले सभी उपयोगकर्ता देता है

 $staff = [];
 $users_list =User::all();
 foreach ($users_list as $item){
    if($item->hasRole('staff')){
       $staff[] = $item;
    }
 }

ब्लेड:

<select class="form-control custom-select-value" name="assigto" required="required">
   <option value="">Select User </option>
      @foreach($asignTo as $user)
         <option value="{{$user->id}}"> {{$user->name}}</option>
      @endforeach
</select>
0
Hima Hima 28 अगस्त 2019, 11:00

1 उत्तर

सबसे बढ़िया उत्तर

मान लें कि यह आपका डेटालेआउट है, और des_id और condesid जुड़े हुए हैं:

users
+----+------+--------+
| id | name | des_id |
+----+------+--------+

role_user
+---------+---------+
| role_id | user_id |
+---------+---------+

contracts
+----+----------+
| id | condesid |
+----+----------+

अनुबंध और भूमिका आईडी पर फ़िल्टर किए गए उपयोगकर्ता रिकॉर्ड पुनर्प्राप्त करने के लिए, वांछित क्वेरी इस तरह दिख सकती है:

SELECT *
FROM users U
JOIN contracts C ON C.condesid = U.des_id AND C.id = 2
JOIN role_user RU ON RU.user_id = U.id AND RU.role_id = 2

जब एक क्वेरी बिल्डर स्टेटमेंट में अनुवाद किया जाता है:

$users = User::select('U.*')
    ->from('users AS U')
    ->join('contracts AS C', 'C.condesid', 'U.des_id')
    ->join('role_user AS RU', 'RU.user_id', 'U.id')
    ->where('RU.role_id', 3)
    ->where('C.id', 8)
    ->get();
1
JorisJ1 29 अगस्त 2019, 13:27