我看到一些使用 AWS RDS 数据库的 Laravel 代码出错。该代码将一条记录写入数据库,然后立即进行搜索以使用主键加载该记录,但没有得到任何结果。
如果我之后手动尝试,我会找到记录。如果我在代码中插入 1 秒的睡眠,它可以正常工作。
我已经尝试使用 Laravel 的读写主机单独设置。我也尝试将它们设置为同一台主机并且只使用一台主机。结果总是一样的。但是其他具有相同配置的环境没有错误。
RDS 中是否有选项需要更改才能在写入后立即可用。
我的 Laravel 应用程序中有一个我想查询的表。
id | company_name | contact |
-----------------------------
1 | Tesco | Name 1 |
2 | Tesco | Name 2 |
3 | Asda | Name 3 |
4 | Tesco | Name 4 |
5 | Asda | Name 5 |
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取包含所有 ID 号的所有唯一公司名称的数组。
'Tesco' => [1,2,4]
'Asda' => [3,5]
Run Code Online (Sandbox Code Playgroud)
我试过了
$companies = Contact::select('company_name','id')->groupBy('company_name')->get();
Run Code Online (Sandbox Code Playgroud)
然而,这要求将“id”包含在违背目的的组中。我知道它要求这样做是因为它不是 SUM 或 COUNT 等。
上表可能看起来不寻常,我知道我应该与公司表有关系,但这在现阶段是必要的。
我想查询用户并按年龄范围对他们进行分组
这是我到目前为止所做的
User::applicant()->get()
->groupBy(function ($item) {
return Carbon::parse($item->dob)->age;
})
->map(function ($collection) {
return $collection->count();
});
Run Code Online (Sandbox Code Playgroud)
这是我从上面的查询中得到的
现在想按年龄范围获取集合和订单
18-24: 1,
25-35: 5,
36-45: 89,
46+ : 84
Run Code Online (Sandbox Code Playgroud) 我有一个新的 Laravel 5.8 应用程序。我开始使用 Eloquent ORM 及其关系。
我马上就遇到了一个问题。
我有以下表格。(这只是一个示例,出于测试原因,不会成为实际应用程序)
Login table:
--------------------------
| id | user | data_id |
--------------------------
| 1 | admin | 1 |
| 2 | admin | 2 |
| 3 | admin | 3 |
--------------------------
Data table:
--------------
| id | ip_id |
--------------
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
--------------
IP table:
----------------------
| id | ip |
----------------------
| 1 | 192.168.1.1 …Run Code Online (Sandbox Code Playgroud) 我试图在 Laravel 中制作简单的种子,但是当我执行“php artisan db:seed”时,它没有填满我的领域。
我制作了我的类别播种机文件,这是我的类别播种机文件:
class CategoryTableSeeder extends Seeder
{
public function run()
{
$categori1 = new Category;
$categori1->name = "Books";
$categori1->save();
$categori2 = new Category;
$categori2->name = "Backpacks";
$categori2->save();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的类别模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
//
}
Run Code Online (Sandbox Code Playgroud)
这是我的类别表迁移文件的一部分:
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
}
Run Code Online (Sandbox Code Playgroud) 在数据库中创建新租户时,我添加了一个用于验证数据的自定义请求类。出于某种原因,虽然我收到以下错误:
这是我的自定义请求类:Too few arguments to function App\\Http\\Requests\\CreateTenantRequest::Illuminate\\Foundation\\Providers\\{closure}(), 0 passed and exactly 1 expected在第 51 行,这是 message() 函数的右括号所在的位置
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class CreateTenantRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$product_id = $this->get('product_id');
return [ …Run Code Online (Sandbox Code Playgroud) 在我的表中,我没有 delete_at 列。
但在 Laravel 模型中,在 where 条件下,deleted_at 返回 null。
下面是我的代码
public function load($id) {
return $this
->select(sprintf('%s.*', $this->getTable()))
->where(sprintf('%s.id', $this->getTable(), $this->getKeyName()), '=', $id)
->first();
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?如何解决这个问题?
我想用 Laravel Eloquent 返回按天分组的每条记录的最小值和最大值,所以这里是:
表结构:费率
id buy_rate sell_rate market_currency_id created_at
== ======== ========= ================== ==========
1 10 7 44 2020-10-10
2 10 9 44 2020-10-10
3 10 8 44 2020-10-10
4 10 12 44 2020-10-11
5 10 14 44 2020-10-11
6 10 13 44 2020-10-11
Run Code Online (Sandbox Code Playgroud)
现在我得到这样的数据:
$rates = Rate::
select('sell_rate', \DB::raw("DATE_FORMAT(created_at, %Y-%m-%d) day))
->where('market_currency_id', '=', 44)
->whereBetween('created_at', [2020-10-10, 2020-10-11])
->orderBy('created_at', 'ASC')
->get()
->toArray();
Run Code Online (Sandbox Code Playgroud)
上面的代码返回:
0 => array:2 [?
"sell_rate" => "8"
"day" => "2010-10-10"
]
1 => array:2 [? …Run Code Online (Sandbox Code Playgroud) 有没有办法像where方法一样链接一个雄辩的查询构建器方法find?例如:
Model::find($id)->where('slug', $slug);
Run Code Online (Sandbox Code Playgroud)
这里的想法不是where像这样调用两次:
Model::where('id', $id)->where('slug', $slug);
Run Code Online (Sandbox Code Playgroud) 大家好,我有这个迁移吗?我希望表格正文的字符串最多 1000 个字符。我认为一个字符串的默认字符数是 255。我希望你能帮助我,因为我需要输入 700 多个字符串。谢谢你们
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('body');
$table->string('editedby');
$table->timestamps();
});
}
Run Code Online (Sandbox Code Playgroud) eloquent ×10
laravel ×10
php ×4
laravel-5 ×3
amazon-rds ×1
laravel-8 ×1
migration ×1
mysql ×1
soft-delete ×1