标签: laravel-6

如何更改 Laravel 6 中的应用程序名称(空格)

在以前的版本中,您可以使用 artisan 命令

php artisan app:name NewName
Run Code Online (Sandbox Code Playgroud)

使用更改应用程序命名空间(默认为 App)。工匠命令现在似乎消失了。不再支持更改命名空间吗?

php namespaces laravel-artisan laravel-6

6
推荐指数
2
解决办法
5257
查看次数

“php artisan migrate”显示“没有要迁移的内容”

我是 Laravel 的新手。我正在开发 laravel 版本 6。我已经创建了迁移。它第一次运行得很好,但是如果我更改迁移文件中的某些内容然后运行php artisan migrate它会显示nothing to migrate. 我php artisan migrate --path也尝试过,但它不起作用。为了使其工作,我必须删除迁移文件并重新创建它。我不想用php artisan migrate:fresh

我应该怎么做才能只运行一个已更改的迁移文件?

php laravel artisan-migrate laravel-artisan laravel-6

6
推荐指数
1
解决办法
2万
查看次数

json 资源和资源集合有什么区别?在 Laravel

有人可以解释 ResourceCollection 和 JsonResource 之间的区别吗?

在 Laravel 6 文档中,您可以生成 2 种不同类型的资源……ResourceCollection 和 JsonResource。 https://laravel.com/docs/6.x/eloquent-resources#resource-responses

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class ShopCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

Run Code Online (Sandbox Code Playgroud)

对...

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class Shop extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-eloquent-resource laravel-6

6
推荐指数
1
解决办法
3819
查看次数

Laravel 6:尚未设置外观根

我已将我的网站从 Laravel 5.8 迁移到 Laravel 6,在Composer 更新后,我在网站上出现此错误,并且仅使用命令php artisan

PHP Fatal error:  Uncaught RuntimeException: A facade root has not been set. in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:242
Stack trace:
#0 /var/www/html/app/Exceptions/Handler.php(48): Illuminate\Support\Facades\Facade::__callStatic('check', Array)
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(376): App\Exceptions\Handler->report(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(141): Illuminate\Foundation\Console\Kernel->reportException(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#3 /var/www/html/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 {main}
  thrown in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 242

Fatal error: Uncaught RuntimeException: A facade root has not been set. in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:242
Stack trace:
#0 /var/www/html/app/Exceptions/Handler.php(48): Illuminate\Support\Facades\Facade::__callStatic('check', Array)
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(376): App\Exceptions\Handler->report(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(141): Illuminate\Foundation\Console\Kernel->reportException(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#3 /var/www/html/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 …
Run Code Online (Sandbox Code Playgroud)

php laravel composer-php laravel-6

6
推荐指数
1
解决办法
1万
查看次数

Laravel 缓存键前缀前面加上数据库前缀

缓存前缀设置具有默认值:

'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache')
Run Code Online (Sandbox Code Playgroud)

但是当我缓存一些数据(使用 Redis)时,缓存键具有意外的格式:

app_database_app_cache:some-data
Run Code Online (Sandbox Code Playgroud)

缓存键以数据库前缀为前缀。我期望缓存键是:

app_cache:some-data
Run Code Online (Sandbox Code Playgroud)

这是正确的行为吗?是否可以在某处进行更改?

laravel laravel-6

6
推荐指数
1
解决办法
5951
查看次数

Laravel 事件调度断言失败

我正在编写一些单元测试来测试数据库事务中间件,出现异常时事务中的所有内容都应该回滚。这段代码工作得很好并且通过了单元测试:

成功的单元测试方法

public function testTransactionShouldRollback()
{
    Event::fake();

    // Ignore the exception so the test itself can continue.
    $this->expectException('Exception');

    $this->middleware->handle($this->request, function () {
        throw new Exception('Transaction should fail');
    });

    Event::assertDispatched(TransactionRolledBack::class);
}
Run Code Online (Sandbox Code Playgroud)

然而,每当我测试一个TransactionBeginning事件时,它都无法断言该事件已被调度。

失败的单元测试方法

public function testTransactionShouldBegin()
{
    Event::fake();

    $this->middleware->handle($this->request, function () {
        return $this->response;
    });

    Event::assertDispatched(TransactionBeginning::class);
}
Run Code Online (Sandbox Code Playgroud)

实际的中间件

public function handle($request, Closure $next)
{
    DB::beginTransaction();

    try {
        $response = $next($request);

        if ($response->exception) {
            throw $response->exception;
        }
    } catch (Throwable $e) {
        DB::rollBack();
        throw $e;
    }

    if (!$response->exception) {
        DB::commit(); …
Run Code Online (Sandbox Code Playgroud)

php phpunit laravel laravel-events laravel-6

6
推荐指数
1
解决办法
6165
查看次数

Laravel中如何在没有连接数据库的情况下模拟模型

index()我尝试测试控制器的方法。在这个方法中,有一个模型。

class UserController extends Controller
{        
     public function index()
     {
        return User::all();
     }
}
Run Code Online (Sandbox Code Playgroud)

在测试课上,我有以下内容。

class UserControllerTest extends TestCase
{
    public function testIndex():void
    {
        $user = factory(User::class)->make();
        $mock = Mockery::mock(User::class);
        $mock->shouldReceive('all')->andReturn($user);
        $this->app->instance('User', $mock);
        $response = $this->json('GET', 'api/users');
        dd($response->getContent()); // error : [2002] Connection refused
    }

}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,与数据库的连接出现错误。这很奇怪,因为我模拟了该模型,这意味着我不需要建立与数据库的连接。我该如何解决这个错误?

错误

SQLSTATE[HY000] [2002] 连接被拒绝(SQL:select * from users where users.deleted_at为空)

phpunit mocking laravel laravel-6

5
推荐指数
1
解决办法
3659
查看次数

Laravel SQLSTATE[HY000] [1698] 用户“root”@“localhost”访问被拒绝

我在测试 Laravel 项目的浏览器中收到此错误:

\n
Illuminate\\Database\\QueryException\nSQLSTATE[HY000] [1698] Access denied for user \'root\'@\'localhost\'\n(SQL: select count(*) as aggregate from `users` where `email` = test@test.com)\n
Run Code Online (Sandbox Code Playgroud)\n

我在 Stack Overflow 和其他网站上发现了类似的问题,但给出的所有解决方案都不适合我。

\n

另一个类似的错误代码是关于 MySQL 的,但我的是关于 Laravel 的。不是MySQL。
\n我使用Ubuntu 18.04 (Bionic Beaver)、Laravel 6、LAMP,我的数据库是 MySQL,服务器由 Apache 2.4 提供服务,而不是 Homebrew 或 PHP localhost。

\n

----------(测试项目上下文)

\n

我正在遵循教程,并成功添加了“登录”和“注册”按钮。现在,当我尝试注册新用户时,我遇到了两个权限问题,我可以用 解决sudo chmod这些问题,但我已经在第三个问题上停留了五个小时。如果今天还没有解决问题,我将重新安装所有内容。

\n

根据我的理解,PHP ARTISAN UI:AUTH需要处理所有代码,您只需要PHP ARTISAN MIGRATE在创建我已经完成的授权 UI 之后即可。MIGRATE我实际上可以在 MYSQL 终端中看到数据库中创建的表。

\n

----------(/测试项目上下文)

\n

我尝试过的解决方案:

\n
DB_CONNECTION=mysql\nDB_HOST=127.0.0.1 or 127.0.0.11 or localhost\nDB_PORT=3306 …
Run Code Online (Sandbox Code Playgroud)

mysql php-7.2 ubuntu-18.04 laravel-6

5
推荐指数
1
解决办法
1万
查看次数

重定向不适用于自定义中间件

我正在使用 Laravel 项目版本 5.8。

我使用了两个中间件AdminAuthor.

我已经创建了AdminMiddlewareAuthorMiddlware

我都在Kernel.php. 我改变了RedirectIfAuthenticatedloginController用于自定义重定向。我创建了不同的路线组。

对于管理中间件,它将重定向admin.dashboard,对于作者中间件,它将重定向到author.dashboard.

之后,它会重定向到/home默认 Laravel 登录用户的路由。我想在登录后将管理员重定向到 admin.dashboard,将作者重定向到author.dashboard。自定义重定向不起作用。我多次查看了我的项目,但找不到问题。

登录控制器.php

// protected $redirectTo = '/home';
public function __construct(){
    if(Auth::check() && Auth::user()->role->id==1) {
        return redirect()->route('author.dashboard');
    } else if (Auth::check() && Auth::user()->role->id==2) {
        return redirect()->route('admin.dashboard');
    }else {
        $this->middleware('guest')->except('logout');
    }
}
Run Code Online (Sandbox Code Playgroud)

RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null){
    if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {
        return redirect()->route('author.dashboard'); …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-5.8 laravel-6

5
推荐指数
1
解决办法
3387
查看次数

如何在vuejs2中“用户停止输入后提交表单”

我有一个搜索模块,其中:当用户停止输入时,它应该搜索 name

我认为解决方案是做一个timeoutwhen a user keyup. 参考

<input type="text" @keyup="textSearch($event)">

textSearch(e){
    var timer;
    clearTimeout(timer);

    timer = setTimeout(() => {
        alert('searching...');
    }, 2500);
}
Run Code Online (Sandbox Code Playgroud)

代码全部正常工作,问题是为什么当我在 1 秒内输入 3 个字符时,它会弹出 3 个警报?我预计应该会弹出一个窗口,因为它会等待 2.5 秒。

代码有问题吗?需要帮助先生们

laravel vue.js laravel-5 vuejs2 laravel-6

5
推荐指数
2
解决办法
9044
查看次数