我在我的项目中使用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)
还是我必须手动实现上述范围的否定?如果是这样,有更好的方法吗?
先感谢您!
我有一个文件夹,其中保存和维护了大约 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 中的版本控制和标签适用于整个存储库,是否有一种简单的方法来跟踪各个文件的版本?我能想到的唯一方法是为每个文件创建一个单独的存储库,但这管理起来相当麻烦。
介绍
伙计们,我对模型工厂和多个唯一列有疑问:
背景
我有一个名为Image的模型。此模型的语言支持存储在单独的模型ImageText中。ImageText具有image_id列,语言列和文本列。
ImageText在MySQL中有一个约束,即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) 目前我正在为我的终端应用程序使用Symfony控制台,但我发现Laravel工匠控制台有很多我可以使用的开箱即用功能.是否有一个版本的Laravel没有其他命令用于开发Web应用程序?或者至少删除安装Laravel时注册的默认可用命令?
我在 Next.js 项目上有一个中间件,我想否定我的/api/*路线。
换句话说,我希望中间件为每个路由运行,除了以/api/. 我在文档中找不到示例。
我如何实现这一点(当然,无需一一编写所有包含的路线)?
首先,我想告诉你,我已经在互联网上搜索了这个问题,但我无法解决这个问题.
我的问题是我的表的主键.
我有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作为主键,guestid如auto_increment字段,以便它可以重置为1对每个事件.例如: …
每当我加载页面时,我都可以看到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
实际上,我想在.env文件中使用这样的arry,我不知道在.env文件中创建数组变量.
VARIABLE_NAME = [
[0] => 'Value 1',
[1] => 'Value 2',
[3] => 'Value 3',
.................
];
Run Code Online (Sandbox Code Playgroud) 我在我的Web应用程序中使用本地化功能.但我想补充App::getLocale()一下url().例如,在我添加的视图中,<a href="{{url('/admin')}}">link</a>我想在HTML中显示URL http://localhost/mysite/en/admin.我该怎么做?
我可以自定义内置URL辅助函数吗?
就像我们可以急切地加载一个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模型加载方法的返回值?
laravel ×8
php ×7
laravel-5 ×4
eloquent ×3
artisan ×1
git ×1
javascript ×1
laravel-4 ×1
laravel-5.1 ×1
laravel-5.2 ×1
laravel-5.4 ×1
localization ×1
middleware ×1
mysql ×1
next.js ×1
node.js ×1
orm ×1
repository ×1
routes ×1
symfony ×1
url ×1