我是新来的laravel,我是工作在laravel 4。我试图迁移到laravel 6的docker,我有基本的设置和laravel项目是了。
我在models文件夹中创建了一个表和一个相应的eloquent模型。我能够读取控制器中的数据。
namespace App\Http\Controllers;
use mysql_xdevapi\Exception;
use App\Models\Card;
class welcomeController {
public function show() {
try {
$cards = Card::all();
} catch (\Exception $e) {
die("Could not connect - " . $e );
}
print_r($cards); exit;
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Card extends Model
{
}
在Laravel项目的旧版本中,"Card::all()"在未使用USE命令导入的情况下工作。
我知道名称空间很重要,但我想知道它是如何工作的,以及如何使复制相同。
2条答案
按热度按时间anauzrmj1#
我不知道你为什么要放弃使用命名空间,如果你不想为你的模型使用
namespaces
,编辑你的composer.json
如下在根目录下创建一个目录,然后添加一个新文件,即'models/Card.php'。
下面应该是
Card.php
的内容在控制器
WelcomeController
中不要忘记在卡模型中使用正斜杠,即“\Card::all()”
确保将
models
文件夹移出app
目录,请注意,这不是php
最佳做法zynd9foi2#
命名空间只是php最糟糕的特性之一。我们几乎没有摆脱需要添加'include'或'require'语句无处不在(感谢autoloader),现在我们必须添加'use'语句...愚蠢,尤其是在法语键盘上,需要一分钟才能到达反斜杠键。想想看:命名空间最初是为了避免类名重复(这在我25年多的C++和PHP编程中从未发生过)...