我的申请中有一个神秘的案例No route found。我在控制器中使用注释。我的app/config/routing.yml看起来像这样:
app:
resource: "@AppBundle/Controller/"
type: annotation
Run Code Online (Sandbox Code Playgroud)
所有路线都工作得很好,但现在我创建了一个新控制器,但它找不到它的路线。
<?php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
/**
* Export controller.
* @Route("/export")
*/
class ExportController extends Controller{
/*
* @Route("/")
*/
public function showExportPage(Request $request)
{
return $this->render('AppBundle:export.html.twig');
}
}
?>
Run Code Online (Sandbox Code Playgroud)
如果我访问该网址,它会显示No route found for "GET /export". 另外如果我这样做router:debug在控制台中执行此操作,则不会列出该路线。我清过缓存好几次了,还是没用。
也许我只是忘记了一个愚蠢的小细节,但我现在真的陷入困境,所以任何提示都很感激。
我有一个带有复合主键的表.我想创建一个迁移,删除该主键,并引入一个新的列'id',它是顺序的,将成为新的主键.
Schema::table('cart_line', function (Blueprint $table) {
$table->dropPrimary('cart_line_pkey');
$table->increments('id');
$table->primary('id');
});
Run Code Online (Sandbox Code Playgroud)
此代码抛出以下错误:
SQLSTATE[42P16]: Invalid table definition: 7 ERROR: multiple primary keys for table "cart_line" are not allowed (SQL: alter table "cart_line" add primary key ("id"))
Run Code Online (Sandbox Code Playgroud)
如果我直接执行以下SQL,则删除主键并执行上面的代码而不会出现错误:
ALTER TABLE cart_line DROP CONSTRAINT cart_line_pkey;
Run Code Online (Sandbox Code Playgroud)
这就是我尝试的原因
DB::statement('ALTER TABLE cart_line DROP CONSTRAINT cart_line_pkey;');
Schema::table('cart_line', function (Blueprint $table) {
$table->increments('id');
$table->primary('id');
});
Run Code Online (Sandbox Code Playgroud)
但是抛出了同样的错误.旧主键不会被删除,但在尝试创建新主键之前没有错误.
我正在使用laravel 5.5和postgres 9.6