小编Eri*_*ich的帖子

将 Laravel Sail 与单独的测试数据库结合使用

我使用 Laravel Sail 作为我的开发环境。根据文档

当 MySQL 容器启动时,它将确保存在一个名称与 DB_DATABASE 环境变量的值匹配的数据库。

这非常适合我的开发环境,但在测试方面效果不佳,因为我.env.testing定义了一个单独的数据库,并且似乎没有创建该数据库 - 当我sail mysql进入容器并运行时show databases;,它没有列出。因此,sail test与数据库相关的每个测试都无法运行。

SQLSTATE[HY000] [1045] Access denied for user ...
Run Code Online (Sandbox Code Playgroud)

我的.env文件包含以下内容:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=dev
Run Code Online (Sandbox Code Playgroud)

我的.env.testing文件包含以下内容:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
Run Code Online (Sandbox Code Playgroud)

DB_USERNAME并且DB_PASSWORD在两个文件中是相同的。

如何创建此数据库以便在运行时可用sail test

编辑:

当我深入研究存储库代码mysql时,我发现构建容器映像时正在创建数据库,但看起来没有创建多个数据库的选项

MYSQL_DATABASE 该变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于 GRANT ALL)。

mysql docker laravel-sail

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

Laravel Forge - 将项目升级到 Laravel 8 需要 PHP 7.4

我最近将 Forge 托管的项目迁移到 Laravel 8.x。部署脚本运行时失败composer install,所有消息均与 PHP 版本错误相关:

Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - This package requires php ^7.4 but your PHP version (7.3.26) does not satisfy that requirement.
  Problem 2
    - Installation request for lcobucci/clock 2.0.0 -> satisfiable by lcobucci/clock[2.0.0].
    - lcobucci/clock 2.0.0 requires php ^7.4 || ^8.0 -> your PHP version (7.3.26) does not satisfy that requirement.
...
Run Code Online (Sandbox Code Playgroud)

不过我这样做了。

至少根据 …

php laravel-forge

3
推荐指数
1
解决办法
3489
查看次数

MariaDB 版本字符串的第一部分是什么意思?

如果我从 PHP 中检查数据库版本信息,MariaDB 将在其版本字符串的前面返回一组额外的版本号。

>>> DB::connection()->getPdo()->getAttribute(PDO::ATTR_SERVER_VERSION);
=> "5.5.5-10.2.20-MariaDB-1:10.2.20+maria~bionic"
Run Code Online (Sandbox Code Playgroud)

代表什么5.5.5

php mariadb

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

在 Laravel Mix 中使用 extract() 时 Vue 未加载

我的 Laravel 项目中有一个近乎普通的 webpack.mix.js 和 resources/js/app.js 设置。

webpack.mix.js:

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css');
Run Code Online (Sandbox Code Playgroud)

资源/js/app.js:

require('./bootstrap');

window.Vue = require('vue');

Vue.component('profile', require('./components/profile/Profile.vue').default);

const app = new Vue({
    el: '#app'
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我.extract()在 webpack.mix.js 中继续执行,一切都会成功编译,但 Vue 根本不会在浏览器中加载。删除.extract()后一切都会恢复正常。我究竟做错了什么?

webpack vue.js laravel-mix

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

雄辩的ORM - 为什么Laravel不认为这两个对象是一样的?

我对Laravel来说还是很新的.在我能够在两个模型之间定义多个Eloquent关系之后,我注意到可以将实例传递给它不属于的父模型实例中的方法.所以我认为在方法本身内强制执行这种关系可能会很好.

在Organization.php中:

/**
 * @param \App\Contact The Contact to delete
 */
public function deleteContact(Contact $contact)
{
    if($contact->organization == $this)
    {
        $this->contacts->find($contact->id)->delete();
    }
    else
    {
        dd('Error: Contact ' . $contact->fname . ' ' . $contact->lname . ' #' . $contact->id . ' does not belong to Organization ' . $this->name . ' #' . $this->id);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我传递实际属于的联系人时,我一直收到自定义错误消息,或者至少我认为他们做了!当我测试关系时tinker,它id为Bob和Bob的组织返回了不同的实例.

>>> $org = Organization::find(17)
=> App\Organization {#2929
     id: 17,
     name: "Test Org",
     primary_contact_id: 33,
   } …
Run Code Online (Sandbox Code Playgroud)

php laravel

0
推荐指数
1
解决办法
332
查看次数