将slim配置为mvc
dependency.php $container['db'] = function($container) {
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container->get('settings')['database']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
return $capsule;
};
User.php (Model class) use Illuminate\Database\Eloquent\Model as Model;
class User extends Model {
protected $table = "users";
protected $fillable = ['name', 'email', 'password'];
}
HomeController.php (Controller class) class Home extends Controller {
public function index($request, $response, $args) {
$user = User::find(1);
var_dump($user);
die();
$title = "Slim Auth";
$response = $this->view->render($response, 'home.php', ["title" => $title]);
return $response;
}
}
在$app->run(); 会出现错误信息 error: Call to a member function connection() on null
为什么会出现这个错误呢?
上面我们提到没有使用db服务,Eloquent是未连接的,这样就很解释这个报错
解决办法
将Capsule改到$app->run();前实例得到全局变量$capsule,可以不注册db服务,model就能正常使用了 $capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container['settings']['db']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
在controller中使用构造函数调用 public function __construct(ContainerInterface $container)
{
$this->container = $container;
$this->db = $container->get("db");
}