2017-06-15 2 views
0

Ein Feld in einer Tabelle enthält ein Objekt, das die Informationen eines Spiels enthält (beide Teamnamen, beide Teamwertungen usw.). Meine Frage ist, wie kann ich überprüfen, ob ein Artikel competitiveId Wert enthält? WertLaravel finden, dass ein Element einen bestimmten String-Wert enthält

Tabellenfeld

[{ 
    "competitorType": "TEAM", 
    "competitorName": "Team A", 
    "competitorId": 40000, 
    "linkDetailCompetitor": "\/v1\/basketball\/teams\/40000", 
    "scoreString": "85", 
    "scoreSecondaryString": "", 
    "completionStatus": "COMPLETE", 
    "resultPlacing": 0, 
    "isDrawn": 0, 
    "isHomeCompetitor": 0, 
    "teamId": 40000, 
    "teamName": "Team A", 
    "teamNameInternational": "", 
    "teamNickname": "A", 
    "teamNicknameInternational": "", 
    "teamCode": "TA", 
    "teamCodeInternational": "", 
    "website": "", 
    "internationalReference": "", 
    "externalId": "71", 
    "clubId": 1067, 
    "clubName": "Team A", 
    "clubNameInternational": "", 
}, { 
    "competitorType": "TEAM", 
    "competitorName": "Team B", 
    "competitorId": 40001, 
    "linkDetailCompetitor": "\/v1\/basketball\/teams\/40001", 
    "scoreString": "89", 
    "scoreSecondaryString": "", 
    "completionStatus": "COMPLETE", 
    "resultPlacing": 1, 
    "isDrawn": 0, 
    "isHomeCompetitor": 1, 
    "teamId": 40001, 
    "teamName": "Team B", 
    "teamNameInternational": "", 
    "teamNickname": "B", 
    "teamNicknameInternational": "", 
    "teamCode": "TB", 
    "teamCodeInternational": "", 
    "website": "", 
    "internationalReference": "", 
    "externalId": "72", 
    "clubId": 1095, 
    "clubName": "Team B", 
    "clubNameInternational": "", 
}] 

Modell Methode

public static function getTeamWinLossRecord($competitionId, $teamId) { 
    $data = self::select('competitors') 
      ->where('competitionId', $competitionId) 
      ->get() 
      ->map(function($item, $teamId){ 
       return $item->competitors; 
      }); 
    dd($data); 
} 

zurückgegebenen Daten

Collection {#396 ▼ 
    #items: array:120 [▼ 
    0 => "[{"competitorType":"TEAM","competitorName":"Team A","competitorId":40000,"linkDetailCompetitor":"\/v1\/basketball\/teams\/40000","scoreString":"95","score ▶" 
    1 => "[{"competitorType":"TEAM","competitorName":"Team C","competitorId":40001,"linkDetailCompetitor":"\/v1\/basketball\/teams\/40001","scoreString":"84", ▶" 

Antwort

1

Verwenden flatten, um alle Objekte in derselben Ebene zu machen, dann filtert es filter oder whereIn verwenden.

$newData = $data->flatten()->filter(function($val) { 
    return $val->competitorId === "someIdid" 
)} 

Mehr Details zu laravel filter und whereIn

1

können Sie ein PHP-Spaß verwenden ction in_array() für die Suche eines bestimmte Zeichenfolge Wert

Font: https://secure.php.net/manual/en/function.in-array.php

+0

Möchten Sie Ihre Antwort überprüfen kann, muss die Collection-Klasse eine Methode enthält, die im Wesentlichen die gleiche Sache tut. – btl

Verwandte Themen