当我在Laravel项目中为某些模型更改我的命名空间时,当我尝试加载相关模型时,它不再起作用。
当我在默认的命名空间中使用它时一切正常,但我想改变它 - 出于某些未提及的原因。
有人看到我做错了吗?看起来对我来说都很好......
<?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 :(得分:0)
您必须编辑文件composer.json
并添加与项目中的文件夹对应的新命名空间,如下例所示:
"autoload": {
"psr-4": {
"App\\": "app/",
"Hello\\FoobarSheeps\\": "folder_name/"
}
},
然后,您必须使用终端中的以下命令更新项目:
composer update
答案 1 :(得分:0)
Sheep类需要在可见数组中使用“farm”:
class Sheep extends Model
{
protected $visible = ['name', 'is_alive', 'farm'];