2016-06-30 17 views
0

ユーザーの名前または姓がない場合、電子メールを返す関数(WeeshUser)があります。Laravel 5関数を使用したEagerの読み込み

// RETURN EMAIL OR NAME 
public function nameOrEmail() { 
    $return = " - "; 
    // Check for first name 
    if ($this->first_name) { 
     $return = $this->first_name; 
     // Add lastname if exists 
     if ($this->last_name) { 
      $return .= " " . $this->last_name; 
     } 
    } elseif ($this->last_name) { 
     // if only lastname exists 
     $return = $this->last_name; 
    } else { 
     //else return email 
     $return = $this->email; 
    } 
    return $return; 
} 

私はこの関数を呼び出したいとき、コントローラEXからの熱心なロード:、

$weeshReturn = WeeshShare::with('sender.nameOrEmail')->get(); 

送信者オブジェクトがWeeshUserオブジェクトである、とあれば、それが正常に動作.nameOrEmailせずにこれを実行しますが、このようにそれを実行する場合、私は非オブジェクト

上のメンバ関数addEagerConstraintsにエラー

()の呼び出しを取得します

これはできますか?

答えて

0

雄弁はnameOrEmailを想定しているため、このエラーを取得するには、送信者との関係であり、それはIlluminate\Database\Eloquent\Relations\Relationオブジェクトを返すことを期待していますが、それから、文字列を返します。

nameOrEmailは送信者クラスの通常の方法であり、それは熱心にロードされ、あなたすでに熱心な負荷送信者ことはありません。

あなたが代わりに行うことができますすることです。

$weeshReturn = WeeshShare::with('sender')->get(); 
$weeshReturn->sender->nameOrEmail(); 
+1

あなたも、より多くの物事を単純化したい場合は、[ミューテーター]を使用することができます(https://laravel.com/docs/master/eloquent-mutators#accessors - と - 突然変異体)。 – Sigismund

関連する問題