2016-12-28 4 views
1

Ich habe in Post viele Tags definiert. Ich zyklische die Beiträge zu jedem und ich versuche, die Tags zu überprüfen, wenn sie bestimmten Namen enthalten - zum Beispiel "Auto".Laravel Finde Tag in Beitrag

$post->tags 

Rückkehr mich in Zyklus

Collection {#346 ▼ 
#items: array:2 [▼ 
0 => Tag {#353 ▼ 
    #fillable: array:1 [▶] 
    #connection: null 
    #table: null 
    #primaryKey: "id" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:4 [▶] 
    #original: array:8 [▶] 
    #relations: array:1 [▶] 
    #hidden: [] 
    #visible: [] 
    #appends: [] 
    #guarded: array:1 [▶] 
    #dates: [] 
    #dateFormat: null 
    #casts: [] 
    #touches: [] 
    #observables: [] 
    #with: [] 
    #morphClass: null 
    +exists: true 
    +wasRecentlyCreated: false 
} 
1 => Tag {#352 ▶} 
] 
} 

Wie ich den Tag-Namen überprüfen?

+0

tun, um diese 'dd ($ post-> Tags-> toArray())' das Ihnen das Ergebnis in einem Array zeigen wird (um es einfacher zu machen, um die Ausgabe zu visualisieren, das ist nur für Test), dann Du machst einfach eine foreach, um über jedes Element zu iterieren, so wie @mannil es geschrieben hat. –

+0

Vielen Dank für den Tipp. Es gibt Array gut zurück. – Maximi

Antwort

1

Sie können alle Tags mithilfe einer foreach-Schleife durchlaufen. Ich nehme an, dass Ihr Tag Objekt ein Namensattribut hat, auf das Sie sich beziehen können. Ein Code-Beispiel wäre:

foreach($post->tags as $tag){ 
    if($tag->name == "THENAMEYOUARELOOKINGFOR"){ 
     //do sth. here 
    } 
} 

Falls Sie die in_array Methode verwenden möchten, können Sie Ihre Sammlung konvertieren, so dass es ein Array nur die Tag-Namen enthalten sein.

$nameArray = $posts->tags->pluck('name')->all(); 
//Now you can use in_array 
if(in_array("YOURSTRING", $nameArray)){ 
    //do sth. 
} 
+0

Ich suche nach Funktion wie in_array(). Ich bin überrascht, wenn das nicht auf einfache Weise gemacht werden kann. – Maximi

+0

@Maximi Sie können die in_array() Methode verwenden, aber es wird ein bisschen komplizierter. Ich aktualisiere meine Antwort;) – manniL

+0

Ok, jetzt sehe ich es gut. Aber welcher ist schneller? – Maximi