我已经移动了我的项目,但遇到了一个问题。我发现.env我的项目仍在使用旧设置(已更改以反映更改的主机)。
我无法通过浏览器访问我的项目,因为它返回此错误: SQLSTATE[HY000] [1045] Access denied for user 'appReop'@'localhost' (using password: YES) (SQL: select * from `settings` limit 1)
appReop是之前的登录用户名。虽然我可以创建一个新用户来反映这一点,但我也遇到了一个问题,即旧密码对于当前数据库配置来说太弱了。
当我运行 php artisan cache:clear 时,它返回与上述相同的错误。所以我很好奇是否有办法手动清除缓存来修复我的错误?
这显示了运行任何 Artisan 命令后弹出的三个错误:
我认为我有一个相对简单的问题,只是误解了我的一个方面。
我有一个索引页,在其中一个表单元格中有一个if语句:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) > 0 && Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) < 10)
Run Code Online (Sandbox Code Playgroud)
错误之处在于我想声明的是,如果是在未来的一天,比如说明天与今天相比,我将返回-1,而如果我提到昨天,则将返回1。
问题是我正在尝试使用这些文档,但是无论我尝试哪种方式,它们都在为我排队:http : //carbon.nesbot.com/docs/#api-humandiff
但是我应该提到在相同的布局上我可以做到这一点:
{{Carbon\Carbon::parse($shipment->due_date)->diffInDays()}}
Run Code Online (Sandbox Code Playgroud)
并返回过去或将来的天数(即使两者都是正数),所以我知道上述工作原理(以某种方式,但是我仍然需要提及正数或负数)。
我试图在Laravel中使用Mailable,我遇到了一个我之前没遇到过的问题,而且目前似乎没有任何东西可以提供帮助.
在开发一个新的Mailable时,除了将一个EXISTING文件附加到mailable之外,我还能正常工作.
错误返回如下:
"message": "Unable to open file for reading [/public/storage/shipments/CJ2K4u6S6uluEGd8spOdYgwNkg8NgLFoC6cF6fm5.pdf]",
"exception": "Swift_IoException",
"file": "E:\\webserver\\htdocs\\truckin\\vendor\\swiftmailer\\swiftmailer\\lib\\classes\\Swift\\ByteStream\\FileByteStream.php",
"line": 131,
Run Code Online (Sandbox Code Playgroud)
但是如果你浏览文件夹和文件,实际上有一个文件,我可以打开它,我甚至可以通过ajax弹出窗口打开它来查看详细信息.
这是我的邮寄:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Shipment;
use App\Shipment_Attachment;
class shipmentAttachments extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public $shipment, $attachment, $storagePath;
public function __construct($shipment, $attachment, $storagePath)
{
$this->shipment = $shipment;
$this->attachment = $attachment;
$this->attachmentFile = '/public'.$storagePath;
$this->proNumber = $shipment->pro_number;
}
/**
* Build …Run Code Online (Sandbox Code Playgroud) 我一直在寻找有关在Laravel中加密和解密值(例如VIN号,员工身份证号,社会保险号等)的想法,最近在Laravel网站上发现了这一点:https ://laravel.com/docs/5.6 /加密
我的问题是,如何在刀片模板上打印解密的值?我可以看到遍历控制器并设置了一个变量,然后将其打印到Blade中,但是我很好奇如何将解密后的值打印到索引中?像这样
@foreach($employees as $employee)
{{$employee->decrypted value somehow}}
{{$employee->name}}
@endforeach
Run Code Online (Sandbox Code Playgroud) 我尝试了多种方法,包括此处的热门帖子:Add View Name to CSS Class on Body
但它会拉出主模板,而不是子模板名称。我使用@yield 和@extends 等。所以目前我的文件系统的一部分在我看来是这样的:
-Views
--Layouts
---=master.blade.php
--Shipments
---=index.blade.php
Run Code Online (Sandbox Code Playgroud)
所以我的shipments.index文件将@extends('layouts.master'),这样我就没有那么多冗余了。但是,参考上面的帖子,我得到以下结果:
<div id="page" class="layouts.master">
这不是我想要的,我至少更喜欢“shipments.index”,我不介意它是否更长,我只是想识别它。
目前,我已经通过应用程序服务提供通过以下行将变量共享到我的所有视图:
$emptyManifestsCount = Carrier_Manifest::withCount('shipments')
->where('carrierOrigin','>',1)
->whereBetween('created_at', [$startDate, $now])
->count();
View::share('emptyManifestsCount', $emptyManifestsCount);
Run Code Online (Sandbox Code Playgroud)
我的问题是,我想将其范围进一步缩小到Carrier_Manifest计数shipment为 0 的范围(因为它与shipments.
目前,这会返回Carrier_Manifests日期和时间之间的正确计数。
我接手了一个项目,注意到它们的启动时间平均为 2-3 秒,令人难以忍受,但使用 Laravel Debugbar 时,启动时间甚至达到了 9-10 秒。
\n\n现在,为了确定其来源,我在同一服务器下并使用同一 MySQL 服务器创建了一个新应用程序。我什至重新创建了基本页面的刀片,差异是巨大的。在使用相同的数据库、相同的服务器和相同的刀片模板(至少作为示例)的情况下,启动时间平均可能下降到 3.4 到 5.6 毫秒。
\n\n现在我的问题是,基于这些因素,我是否可以做一些事情来尝试找出旧版本中启动时间延迟的真正问题所在(请注意,它会定期更新到最稳定的 Laravel 版本,所以自 Laravel 4.1 或其他版本以来它并不旧)?我不想重建整个项目,但绝对更喜欢在这个缓慢的时间里重建整个项目,我认为这个项目不简单,但也绝对不复杂。
\n\n我希望 Laravel Debugbar 可以给我所需的提示,但就我而言,延迟肯定与数据库没有任何关系......
\n\n我应该提到的是,我\xe2\x80\x99已经执行了常规缓存 artisan 命令,例如路由、视图config:cache等。会话缓存和常规缓存是通过 Redis 处理的。
我有一个控制器,我想返回一个包含多个数组的 JSON 响应。首先,我将展示我的控制器:
<?php
public function notificationEmails(Request $request)
{
$shipment = Shipment::findOrFail($request->shipmentID);
$billToAccount = $shipment->billtoAccount;
$billToAccountUsers = $billToAccount->users;
foreach ($billToAccountUsers as $billToAccountUser){
$billToEmail = $billToAccountUser->email;
}
$shipToAccount = $shipment->shiptoAccount;
$shipToAccountUsers = $shipToAccount->users;
foreach ($shipToAccountUsers as $shipToAccountUser){
$shipToEmail = $shipToAccountUser->email;
}
$shipFromAccount = $shipment->shipfromAccount;
$shipFromAccountUsers = $shipFromAccount->users;
foreach ($shipFromAccountUsers as $shipFromAccountUser){
$shipFromEmail = $shipFromAccountUser->email;
}
return response()->json([
'details' => $shipment,
'billersEmails' => $billToEmail
]);
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子,但此时如果我只是 dd($billToEmail),我会得到我请求的所有数据的多行返回(所有这些都是电子邮件),但是当我返回 JSON 特定返回“bilersEmails ",我只收到其中一封电子邮件的回复。
我知道肯定有可能返回多封电子邮件,但到目前为止我还没有在任何地方找到合适的回复。
我有一个 Laravel 编辑表单,它使用 Select2 jQuery 扩展以及从数据库表中提取的选项。
下面是我指的表单选择字段:
<select id="ship_to" name="ship_to" class="js-example-basic-single2 form-control">
@foreach($cCustomers as $customer)
<option value="{{$customer->id}}"
@if ($shipment->ship_to == $customer->id) selected="selected"
@endif
>{{$customer->customer_name}}</option>
@endforeach
</select>
Run Code Online (Sandbox Code Playgroud)
现在,一切都弹出来了,选项都在那里,选择框已转换为 Select2 格式。我的问题是,当我从数据库中提取数据时,如果特定列为空,则 select2 会提取第一个选项,而不是允许的空选择(是的,我选择了一个占位符),清除 select2 框效果很好。
所以我的问题是这样的:
如果我有一条记录,其中 select 的字段为 NULL,如何让页面自动打开,将 null 值和占位符放在 select2 框中,而不是第一个选项?
电流输出:
<select id="ship_to" name="ship_to" class="js-example-basic-single2 form-control select2-hidden-accessible" data-select2-id="ship_to" tabindex="-1" aria-hidden="true">
<option></option>
<option value="164" data-select2-id="387">4G ENTERPRISES</option>
<option value="192">4G ENTERPRISES</option>
<option value="81">5280 PACKAGING</option>
Run Code Online (Sandbox Code Playgroud) 目前,我的 Laravel 项目中有一个字段需要某种形式的加密,因此我通过 Laravel 使用可用的加密,并在我的刀片中使用以下内容进行解密:
{{\Crypt::decryptString($e->SCEIN)}}
Run Code Online (Sandbox Code Playgroud)
但我很好奇是否有办法让我能够在解密后仅显示该字段的最后 8 个字符。我似乎找不到太多提及它的地方,尽管我确实知道使用substr在技术上可以让我到达那里,但我不确定如何在加密字段上使用它。
目前,我在表单上有一个日期字段,我希望能够插入正在编辑的当前记录的当前值。我的 MySQL 数据库中没有记录缺少此日期字段,但由于某种原因,记录的值实际上不会加载到字段输入中,但它会加载到输入字段的“值”部分。
目前这里是我的领域的代码:
<input type="date" name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required value="{{$shipment->date}}">
Run Code Online (Sandbox Code Playgroud)
这是代码输出:
<input name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required="" value="2018-05-10 00:00:00" type="date">
Run Code Online (Sandbox Code Playgroud)
但这就是我的浏览器中的样子:
但是在我的 MySQL 数据库表中,该字段(这是一个日期字段)的格式如下:2018-05-12
对于一个小的搜索块表单,我有以下控制器功能部分:
$manifests = DB::table('carrier_manifests')
->join('customers', 'carrier_manifests.carrierOrigin', '=', 'customers.id')
->select('carrier_manifests.*', 'customers.customer_name')
->where([
['manifestNumber', 'LIKE', '%' . $manifest . '%'],
['originTerminal','LIKE','%' . $terminal . '%'],
['carrierOrigin', $direction[0], $direction[1]],
])
->whereNull('deleted_at')
->orderBy('dateUnloaded', 'DESC')
->whereBetween('dateUnloaded', [$startDate, $endDate])
->limit(100)
->get();
Run Code Online (Sandbox Code Playgroud)
它的每个部分都正常工作,除了一个部分, the whereBetween,由于工作流程的必要性,有时dateUnloaded没有为 each 填写 in 子句carrier_manifest,这意味着如果该dateUnloaded字段为空,它将被排除在搜索结果之外。
是否有关于如何包含那些缺少的结果的建议dateUnloaded?