2016-05-01 13 views
0

こんにちは、私は私がlaravelとルーメンをインストールしていると私は私が持っている今Laravelは

Laravel Framework version Lumen (5.2.6) (Laravel Components 5.2.*)

としてバージョンを持っているLaravelに新しいですし、Laravelルーメン とRESTfulなAPIを作るしようとしている外部キーのデータを取り込みます加えて、私は、DBの列名をマッピングするためhttps://github.com/jarektkaczyk/eloquenceをインストールしていると私は

コンタクトモデル

として、これまで行ってきました

Organizagionモデル

namespace App; 
use Illuminate\Database\Eloquent\Model; 

class Organization extends Model { 

    protected $table = 'organization'; 
    protected $primaryKey = 'idorganization'; 
    protected $visible = ['organization_name', 'website','website','phone','num_employes','industry']; 

    public function contacts() { 
     return $this->belongsTo('App\Contacts', 'idorganization'); 
    } 
} 

および連絡先用のコントローラは

namespace App\Http\Controllers; 
use App\Contacts; 
use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 

class ContactsController extends Controller 
{ 
    public function getAll() { 
     $contacts = Contacts::all(); 
     return response()->json($contacts); 
    } 
} 

のように見えますが、応答は、組織からのモデルの列とidorganizationに移入されません。加えて

私は $contacts = Persona::with('organization')->all();

として試みしかし、私はコンタクトモデルと、それはまだ動作しない特性でSofa\Eloquenceを削除した場合には、

Call to undefined method Sofa\Eloquence\Query\Builder::all()

としてエラーを返します。

私は

[ 
    { 
     "firstname":"Abhik", 
     "lastname":"Chakraborty", 
     "organization":{ 
      "organization_name": "foo" 
      "website": "bar" 
      .................. 
     } 
    }, 
    { 
     "firstname":"John", 
     "lastname":"Martin" 
     "organization":{ 
      "organization_name": "foo" 
      "website": "bar" 
      ............... 
     } 
    } 
] 

答えて

1

あなたの応答がない理由だろう、私は

[ 
{ 
    "firstname":"Abhik", 
    "lastname":"Chakraborty", 
    "idorganization":"1" 
}, 
{ 
    "firstname":"John", 
    "lastname":"Martin" 
    "idorganization":"1" 
} 
] 

期待される結果としての応答を取得関係がないと明らかに何か

をしないのです教えてくださいall()と呼ぶときにidorganizationフィールドに値を設定します。その関係は、デフォルトで遅延ロードされているため、関係データw実際にアクセスしたときに読み込まれることがあります。あなたが望むものを達成するために

、あなたはeager loadingとして命名されwith()方法を使用しているとき、代わりにall()get()メソッドを使用する必要があります。

これを置き換えますと

Persona::with('organization')->all();  

あなたが正しい@Baurak
Persona::with('organization')->get();  
+0

!熱心な負荷が解決策です。私は、実際には、連絡先モデルの 'hasOne'を' public function organization(){'{ return $ this-> belongsTo( 'App \ Organization'、 'idorganization'); } ' 私は' protected $ visible = ['firstname'、 'lastname'、 'organization'];と設定しています。どうもありがとう。 –