小编jed*_*ylo的帖子

Laravel否定本地范围

我在我的项目中使用laravel 5.2我刚刚实现了一个本地范围(为简单起见,使用laravel docs示例-https://laravel.com/docs/master/eloquent#local-scopes )

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Scope a query to only include popular users.
     *
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopePopular($query)
    {
        return $query->where('votes', '>', 100);
    }

}
Run Code Online (Sandbox Code Playgroud)

我打电话:

$users = App\User::popular()->get();
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力

可以否定范围吗?

$users = App\User::Notpopular()->get();
Run Code Online (Sandbox Code Playgroud)

还是我必须手动实现上述范围的否定?如果是这样,有更好的方法吗?

先感谢您!

php laravel eloquent laravel-5

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

Git:管理存储库中多个单个文件的版本控制

我有一个文件夹,其中保存和维护了大约 20 个或 MySQL 脚本文件,并且我目前正在使用 Git 管理版本控制。由于这些脚本在某种程度上彼此独立,因此我想将我的存储库设置为单独跟踪每个文件的版本控制。例如,考虑我有以下内容:

ImportTableA.sql  -> v1.5
ProcessTableA.sql -> v1.2
TableAReport.sql  -> v2.1
Run Code Online (Sandbox Code Playgroud)

一段时间后,对其中两个文件进行了一些修改,它们看起来像这样:

ImportTableA.sql  -> v1.7
ProcessTableA.sql -> v1.2
TableAReport.sql  -> v3.0
Run Code Online (Sandbox Code Playgroud)

由于 Git 中的版本控制和标签适用于整个存储库,是否有一种简单的方法来跟踪各个文件的版本?我能想到的唯一方法是为每个文件创建一个单独的存储库,但这管理起来相当麻烦。

git repository

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

Laravel:使用Faker播种多个唯一的列

介绍

伙计们,我对模型工厂和多个唯一列有疑问:

背景

我有一个名为Image的模型。此模型的语言支持存储在单独的模型ImageText中ImageText具有image_id列,语言列和文本列。

ImageTextMySQL中有一个约束,即image_id和语言的组合必须唯一。

class CreateImageTextsTable extends Migration
{

    public function up()
    {
        Schema::create('image_texts', function ($table) {

            ...

            $table->unique(['image_id', 'language']);

            ...

        });
    }

    ...
Run Code Online (Sandbox Code Playgroud)

现在,我希望每个图像在完成播种后都具有多个ImageText模型。对于模型工厂和播种机,这很容易:

factory(App\Models\Image::class, 100)->create()->each(function ($image) {
    $max = rand(0, 10);
    for ($i = 0; $i < $max; $i++) {
        $image->imageTexts()->save(factory(App\Models\ImageText::class)->create());
    }
});
Run Code Online (Sandbox Code Playgroud)

问题

但是,当使用模型工厂和fakerr进行播种时,通常会看到以下消息:

[PDOException]                                                                                                                 
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '76-gn' for key 'image_texts_image_id_language_unique'
Run Code Online (Sandbox Code Playgroud)

这是因为在某个时候,在for循环内,伪造者将为图像随机两次使用相同的languageCode,从而打破了['image_id','language']的唯一约束。

您可以更新ImageTextFactory这样说:

$factory->define(App\Models\ImageText::class, …
Run Code Online (Sandbox Code Playgroud)

php mysql laravel laravel-seeding laravel-5.4

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

是否只有控制台应用程序的laravel版本?

目前我正在为我的终端应用程序使用Symfony控制台,但我发现Laravel工匠控制台有很多我可以使用的开箱即用功能.是否有一个版本的Laravel没有其他命令用于开发Web应用程序?或者至少删除安装Laravel时注册的默认可用命令?

php symfony laravel artisan

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

Next.js 中间件匹配器否定路径

我在 Next.js 项目上有一个中间件,我想否定我的/api/*路线。

换句话说,我希望中间件为每个路由运行,除了以/api/. 我在文档中找不到示例。

我如何实现这一点(当然,无需一一编写所有包含的路线)?

javascript middleware routes node.js next.js

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

CONSOLAIN在Laravel 5 Schema Builder上独一无二

首先,我想告诉你,我已经在互联网上搜索了这个问题,但我无法解决这个问题.

我的问题是我的表的主键.

我有2个表,事件event_guest

+-----------+
| event     |
+-----------+
| eventid   |
+-----------+

+-------------+
| event_guest |
+-------------+
| guestid     |
| eventid     |
| firstname   |
| lastname    |
| email       |
+-------------+
Run Code Online (Sandbox Code Playgroud)

每个活动都有很多event_guest,但每个活动的电子邮件必须是唯一的.

在我的控制器上,我想通过在EventGuest模型上使用firstOrCreate方法来获取或创建:

EventGuests::firstOrCreate(['eventid' => $eventid,'firstname' => 'Ivan', 'lastname'=>'Bravo', 'email'=>'ivnbrv@mac.com');
Run Code Online (Sandbox Code Playgroud)

如果未在事件中设置电子邮件,则必须记录该条目.

+-----------+----------+-----------+-----------+----------------+
|  guestid  | eventid  | firstname | lastname | email           | 
+-----------+----------+-----------+-----------+----------------+
|         1 |        1 | Ivan      | Bravo     | ivnbrv@mac.com | 
+-----------+----------+-----------+-----------+----------------+
Run Code Online (Sandbox Code Playgroud)

我需要的是eventid作为主键,guestidauto_increment字段,以便它可以重置为1对每个事件.例如: …

php orm laravel eloquent laravel-5

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

Laravel:使用Memcache而不是Filesystem

每当我加载页面时,我都可以看到Laravel从/ storage文件夹中读取大量数据.

一般来说,动态读取和写入我们的文件系统是一个瓶颈.我们使用的是Google App Engine,我们的存储位于Google云端存储中,这意味着一次写入或读取等同于"远程"API请求.谷歌云存储速度很快,但我觉得它很慢,因为Laravel每个请求最多可以进行10-20次云存储调用.

是否可以将数据存储在Memcache而不是/ storage目录中?我相信这会给我们的系统带来更好的性能.

NB.Session和Cache都使用Memcache,但编译的视图和meta存储在文件系统中.

php google-app-engine google-cloud-storage laravel laravel-4

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

Laravel 5.1在.env文件中创建数组变量以供全局使用

实际上,我想在.env文件中使用这样的arry,我不知道在.env文件中创建数组变量.

 VARIABLE_NAME = [
    [0]  => 'Value 1',
    [1] => 'Value 2',
    [3] => 'Value 3',
    .................

];
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5.1

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

Laravel 5.2-如何在现有的url()辅助函数中添加前缀?

我在我的Web应用程序中使用本地化功能.但我想补充App::getLocale()一下url().例如,在我添加的视图中,<a href="{{url('/admin')}}">link</a>我想在HTML中显示URL http://localhost/mysite/en/admin.我该怎么做?

我可以自定义内置URL辅助函数吗?

url localization laravel laravel-5 laravel-5.2

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

Laravel - 渴望加载Eloquent模型的方法(不是关系)

就像我们可以急切地加载一个Eloquent模型的关系一样,有没有办法急于加载一个不是Eloquent模型的关系方法的方法?

例如,我有一个Eloquent模型GradeReport,它有以下方法:

public function totalScore()
{
    return $scores = DB::table('grade_report_scores')->where('grade_report_id', $this->id)->sum('score');
}
Run Code Online (Sandbox Code Playgroud)

现在我收集了一些GradeReportEloquent模型.

$gradeReports = GradeReport::where('student_id', $studentId)->get();
Run Code Online (Sandbox Code Playgroud)

如何在集合中totalScore为所有GradeReportEloquent模型加载方法的返回值?

php laravel eloquent laravel-5

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