मेरे पास दो टेबल हैं

Field_values ​​​​(कुछ डेटा के साथ)

id  field_id  value  label          sort
1       1       1     Men            1
2       1       2     Women          2
3       2       3     Relationship   1
4       2       4     Chat           2
5       2       5     Friendship     3

User_interests (कुछ डेटा के साथ)

user_id  field_id  value_id
   1        1         1
   1        2         4
   1        2         5

मैं एक प्रश्न लिखने की कोशिश कर रहा हूं जहां मुझे आईडी 1 के साथ उपयोगकर्ता मिलेगा और फ़ील्ड_आईडी 2 होगा और मेरे ब्लेड वैल्यू_आईडी 4 और 5 में गूंजने में सक्षम होने के लिए, लेकिन उन आईडी को गूंजने के लिए नहीं बल्कि 'लेबल' कॉलम के मूल्य को प्रतिबिंबित करने के लिए जो इससे मेल खाता है इस उदाहरण में value_id फॉर्म उपयोगकर्ता_रुचि तालिका 4,5 इस प्रकार चैट, मित्रता फ़ील्ड_वैल्यू तालिका से। यहां मैंने जो कोशिश की है, लेकिन मुझे छह तत्वों की सरणी मिलती है जो रिलेशनशिप, चैट, फ्रेंडशिप x2 हैं। किसी भी मदद की सराहना की जाती है।

जिज्ञासा:

public static function queryFunction($userId)
{
    $results = DB::table('user_interests as uin')
        ->select(DB::raw("
            fv.*,
            uin.field_id, uin.value_id
        "))
        ->join('field_values as fv', 'fv.field_id', '=', 'uin.field_id')
        ->where('uin.field_id', 2)
        ->where('uin.user_id', $userId)
        ->get();

        dd($results);

    return $results;
}
1
rose 15 अप्रैल 2020, 17:25

1 उत्तर

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

बिना शामिल हुए 2 स्पष्ट चरणों के बारे में क्या:

$user_interests = DB::table('user_interests')->select('value_id')->where('field_id', 2)->where('user_id', $userId)->get();

इसमें से values को सरणी के रूप में लें ($user_interests_values) और थान

$results = DB::table('field_values')->whereIn('value', $user_interests_values)->get();

1
Autista_z 15 अप्रैल 2020, 17:59