我有一个返回两个日期之差的函数
由于日期是从数据库生成的,因此可能有多个记录需要调用此函数。
function dateDifference($date_1 , $date_2 , $differenceFormat = '%y Year %m Month' )
{
$datetime1 = date_create($date_1);
$datetime2 = date_create($date_2);
$interval = date_diff($datetime1, $datetime2);
return $interval->format($differenceFormat);
}
现在我要做的是我必须从视图中调用此函数,因为页面中可能存在多个日期差异。 将逻辑保留在视图中并不是非常专业。
答案 0 :(得分:1)
根据我的理解,你有一个你在视图中迭代的集合/数组,所以我的建议是你应该操纵控制器中的所有逻辑,然后将操纵的数据发送到视图像这样:
我将您的数据作为一个集合,您可以使用mapWithKeys
收集方法将数据添加到您当前的数据中,如下所示:
在您的控制器中:
$data = collect([...array...]); // This is your data which you can get from DB
$manipulatedData = $data->mapWithKeys(function ($item) {
return [$item['dateDiff'] => dateDifference($item['date1'], $item['date2'])]; // Use your method here
});
在视图中:
@foreach($manipulatedData as $data)
<div>{{ $data->dateDiff }}</div>
@endforeach
希望这有帮助!
答案 1 :(得分:1)
创建一个帮助器类并在app / config / app.php中将其注册为别名
示例:
<?php
namespace app\Service;
use Illuminate\Support\Facades\Config;
use Poznet\PPAL\Helpers\Slider;
use Poznet\PPAL\Models\Config as Konfig;
use Illuminate\Support\Facades\Cache;
class FrontendService
{
public static function Config($name){
// put your logic here as foo :)
return $foo;
}
}
在config / app.php
中 'aliases' => [
...
'Frontend' => 'App\Service\FrontendService'
],
在视图中你可以使用
{{ Frontend::config('foo') }}
答案 2 :(得分:1)
您可以使用Date Mutators将Carbon的实例中的日期列转换为:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = [
'date_1',
'date_2'
];
}
然后您可以在视图中使用它:
$date_1->diff(date_2)->format('%y Year %m Month')