2015-08-26 75 views
0

當我在我的Laravel項目中更改某些模型的命名空間時,當我試圖加載相關模型時,它不再工作。Laravel Model in different Namespace not working with eager/related加載

當我在默認命名空間中使用它時,它都可以正常工作,但是我想改變它 - 出於一些未提及的原因。

有人看到我在做什麼錯嗎?貌似都沒什麼問題..

<?php 

# Foobar 
namespace Hello\FoobarSheeps; 

use Illuminate\Database\Eloquent\Model; 

class Sheep extends Model 
{ 
    protected $visible = ['name', 'is_alive']; 

    public function farm() 
    { 
     return $this->belongsTo('Hello\FoobarSheeps\Farm'); 
    } 
} 

# Address 
namespace Hello\FoobarSheeps; 

use Illuminate\Database\Eloquent\Model; 

class Farm extends Model 
{ 
    protected $visible = ['city', 'latitude', 'longitude']; 

    public function sheep() 
    { 
     return $this->hasOne('Hello\FoobarSheeps\Sheep'); 
    } 
} 

# Result 
public function index() 
{ 
    # Just returns the Sheeps, not the Farms.. 
    return \Hello\FoobarSheeps\Sheep::with('farm')->get(); 
} 

指數的反應僅僅是名稱和羊的is_alive布爾。不是與他們有關的農場。

+0

您是否嘗試過'composer dump-autoload'來重新加載模型? – yangqi

+0

你是否想完全改變應用程序的根名稱空間('App'到'Hello'),還是需要與現有的'App'平行的第二個根名字空間? – lukasgeiter

回答

0

你必須編輯這個文件composer.json並添加相應的文件夾中的新的命名空間在您的項目,像這樣的例子:

"autoload": { 
    "psr-4": { 
     "App\\": "app/", 
     "Hello\\FoobarSheeps\\": "folder_name/" 
    } 
}, 

然後,你必須在你的終端使用以下命令來更新您的項目:

composer update 
0

有在可見參數數組中的 「農場」 所需要的羊類:

class Sheep extends Model 
{ 
    protected $visible = ['name', 'is_alive', 'farm'];