2017-10-19 16 views
1

Comment puis-je créer une méthode dans mon modèle ci-dessous qui se composent de la première valeur de pages?Comment obtenir la première ligne de relation Laravel

Je veux que ma méthode de couverture obtienne la première instance de pages.

Voici mon modèle:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Book extends Model 
{ 
    protected $guarded = []; 

    public function pages() 
    { 
     return $this->hasMany('\App\Page'); 
    } 

    public function cover() 
    { 
     //first page of pages here 
    } 

} 
+1

'return $ this-> pages() -> first()'? – kerbholz

+0

renvoie une erreur, App \ Book :: cover doit renvoyer une instance de relation. –

Répondre

5

Utilisez la première() sur la relation

public function cover() 
{ 
    return $this->pages()->first(); 
} 
+0

je l'essaie mais il retourne cette erreur, App \ Book :: cover doit renvoyer une instance de relation. –

+1

Vous devez appeler sur une instance de livre, par exemple: App \ Book :: first() -> couverture() –

+1

vous devez utiliser(), optherwise Laravel tente de chercher une relation –