小编jed*_*ylo的帖子

在Laravel中动态设置数据库连接和语言

我有3个域指向相同的Laravel应用程序.我想要的是每个人连接到自己的数据库并根据TLD加载自己的语言文件.我可以在哪里设置这些设置的文件?我可以直接在配置文件中执行此操作,也可以在加载配置之前执行某些操作.

我所拥有的是一个简短的函数,它将解析域并获得TLD,在此基础上,经过快速验证后,我们将知道将使用哪种数据库和语言.

php configuration laravel laravel-5

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

如何在查询中对eloquent模型进行别名

你如何为一个雄辩的模型添加别名?例如,如果我有一个SQL查询,如下所示:

SELECT one.name
     , one.id
     , one.name AS sortkey1
     , CAST(NULL AS UNSIGNED) AS sortkey2
     , CAST(NULL AS UNSIGNED) AS sortkey3
 FROM locations AS one
WHERE one.parent_id = 0
UNION ALL
....
Run Code Online (Sandbox Code Playgroud)

在我的存储库中,我会有如下内容:

$first = $this->model->where('one.parent_id', '=', 0)
                     ->select('one.name'
                           , 'one.id'
                           , 'one.name AS sortkey1'
                           , DB::raw('CAST(NULL AS UNISIGNED) AS sortkey2')
                           , DB::raw('CAST(NULL AS UNISIGNED) AS sortkey3'));
Run Code Online (Sandbox Code Playgroud)

那么你如何为模型添加别名呢.在上面的示例中,模型映射了位置表,在我的雄辩查询中,我希望将其one替换为,而不是locations

sql laravel eloquent laravel-5.1 laravel-query-builder

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

在Laravel中基于环境禁用CSRF中间件

在我的应用程序中,我想在我的笔记本电脑APP_ENV=local和开发上运行时禁用CSRF APP_ENV=dev.无法通过routes.php或网络中间件来了解如何做到这一点.这是我的routes.php

Route::group(['middleware' => ['web']], function () {

    Route::get('/', function () {
        return view('welcome');
    })->middleware('guest');

    Route::group(['middleware' => 'auth'], function()
    {
        Route::resource('battles', 'BattlesController'); //, ['except' => ['index']]);
        Route::resource('disputes', 'DisputesController');
        Route::resource('messages', 'MessagesController');
    });

});
Run Code Online (Sandbox Code Playgroud)

我可以使用一些env文件加载魔法来确保应用程序加载任何一个.local.ev, .dev.env, .test.env, .production.env但我仍然必须找到一种方法来确保web中间件仅包含CSRF时不在本地或开发

php laravel laravel-routing laravel-5 laravel-5.2

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

使用 phpunit 时,雄辩的查询范围返回构建器而不是模型

我有以下代码

$user = User::findByAccountCode($transaction->account_code);
Run Code Online (Sandbox Code Playgroud)

当我在 phpunit 上执行这段代码时,它返回一个 Illuminate\Database\Eloquent\Builder 的实例而不是用户模型。

这是 findByAccountCode 的代码

public function scopeFindByAccountCode($query,$account_code){


   return $query->where('account_code', $account_code)->first();

}
Run Code Online (Sandbox Code Playgroud)

我的应用程序出现以下错误

ErrorException: 传递给 aunicaj\Libraries\MarkupRepository::user() 的参数 1 必须是 aunicaj\Models\User 的实例,给定的 Illuminate\Database\Eloquent\Builder 实例

当我使用浏览器时,它工作正常,但在 phpunit 上却没有。谢谢

php phpunit laravel eloquent laravel-5

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

Laravel递减列值但不为负

我知道我可以使用此查询减少laravel中的列值

DB::table('users')->decrement('votes', 5);
Run Code Online (Sandbox Code Playgroud)

但是我想限制该值成为负值。

无论如何,laravel可以做到这一点吗?

php laravel eloquent laravel-5 laravel-5.2

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

Laravel 中关系的计数关系

假设我有一个Conversation这样的模型:

class Conversation extends Model
{
    public function questions (){
        return $this->hasMany('App\Question','conversation_id','conversation_id');
    }
    public function category ()
    {
        return $this->belongsTo('App\Category', 'cat', 'cat_id');
    }

}
Run Code Online (Sandbox Code Playgroud)

和这样的Question模型:

class Question extends Model
{
    public function conversation ()
    {
        return $this->belongsTo('App\Conversation', 'conversation_id', 'conversation_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这hasMany两者之间存在关系。

另一方面,Category下面有一个与Conversation模型有关系的类似:

class Category extends Node
{
    public function conversations (){
        return $this->hasMany('App\Conversation','cat','cat_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想附加一个名为question_countto的属性,Category该属性计算每个类别的所有对话问题。为此,我添加了以下内容:

    public function getQuestionsCountAttribute ()
    {
        return $this->conversations->questions->count();
    }
Run Code Online (Sandbox Code Playgroud)

但是当获取一个类别时,我收到了这个错误: …

php laravel eloquent laravel-5 laravel-5.3

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

php artisan migrate:未找到类架构

执行迁移时,在Windows控制台中执行以下命令:

php artisan migrate
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,它显示以下错误:

[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Market\Providers\Schema' not found
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我,我将非常感激.

php database web-applications laravel artisan-migrate

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

如何排除特定域的 CSRF 令牌?

我希望禁用特定域的 CSRF 验证令牌。例如,我的 EC2 实例。这样我就可以在我的 EC2 实例上运行实时跨浏览器测试,而不会出现任何问题。

我找到了很多有关更新VerifyCsrfToken应用程序内特定路由的中间件目录的信息,但没有找到有关如何检查主机或域的信息。我可以/*在受保护的 URI 中使用。

class VerifyCsrfToken extends BaseVerifier
{
    /**
    * The URIs that should be excluded from CSRF verification.
    *
    * @var array
    */

    protected $except = [
        '/*'
    ];
}
Run Code Online (Sandbox Code Playgroud)

然而,出于显而易见的原因,我不想使用这种方法。

我使用的是标准 Laravel 5.3 设置,因此使用了该框架附带的常用中间件文件。

任何帮助,将不胜感激!

php csrf laravel laravel-5

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

在Laravel 5.5中生成工厂

我跑到命令之下

php artisan make:factory AddressFactory

我的结果低于结果

$factory->define(Model::class, function (Faker $faker) {

但我想得到如下结果

$factory->define(App\Address::class, function (Faker $faker) {

我该怎么办 ?

php factory laravel laravel-5 laravel-5.5

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

以 Laravel 的方式销毁/重置单身人士

public function register() {
    $this->app->singleton('Qwerty', function ($app) {
        return new QwertyManager();
    });
}
Run Code Online (Sandbox Code Playgroud)

这就是我的单例类现在的样子,我想重置单例对象或通过 laravel 销毁它的实例。我正在使用 5.3

php singleton destroy laravel laravel-5

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