我正在尝试使用我的控制器中的以下内容显示具有相应类别的产品列表:
return View::make('products.index')
->with('categories', Categories::with('products')->orderBy('name', 'asc')->Paginate(15))
Run Code Online (Sandbox Code Playgroud)
但是分页不起作用,它显示所有产品(500+),而我想在每页只显示15.这是我的模特:
分类:
public function products()
{
return $this->belongsToMany('Products');
}
Run Code Online (Sandbox Code Playgroud)
产品介绍:
public function categories()
{
return $this->belongsToMany('Categories');
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能使分页工作?
我从来没有做过很多缓存,但是现在尝试尝试一下。我有一个返回大量数据的仪表板,并且为了减轻负载,我在缓存数据,如下所示:
return cache()->rememberForever('something', function () {
return auth()->user()->something()->get();
});
Run Code Online (Sandbox Code Playgroud)
其中“某物”只是一个相关模型。创建新记录时,在控制器store和update方法中,我只需要这样做:
cache()->forget('something');
Run Code Online (Sandbox Code Playgroud)
所有这些都完美无缺。但是,当我与另一个用户登录时,显然前一个用户的所有缓存数据都显示在仪表板上。
有没有一种简单的方法可以简单地为每个用户缓存数据?
我正在为表单使用Laravel Collective,每当验证字段失败时,我都需要添加一个类。默认字段如下所示:
{{ Form::text('name', null, ['class' => 'form-control']) }}
Run Code Online (Sandbox Code Playgroud)
每当验证失败时,我都需要添加border-danger到该类中:
{{ Form::text('name', null, ['class' => 'form-control border-danger']) }}
Run Code Online (Sandbox Code Playgroud)
但是我不能简单地@if ($errors->has('name'))在那个{{ Form }}领域内做。
有没有简单的方法可以做到这一点?我不想做的一件事就是这样的事情:
@if ($errors->has('name'))
{{ Form::text('name', null, ['class' => 'form-control border-danger']) }}
@else
{{ Form::text('name', null, ['class' => 'form-control']) }}
@endif
Run Code Online (Sandbox Code Playgroud) 我Expense和他之间有很多关系Tag.现在我想只抓取name与a相关的所有标签Expense.
所以,让我说我有一个Expense:
$expense = Expense::first();
Run Code Online (Sandbox Code Playgroud)
现在我可以轻松抓取所有标签:
$tags = $expense->tags;
Run Code Online (Sandbox Code Playgroud)
这将给我一组标签.理想情况下,我想要一个标记名称数组:
array:5 [?
0 => "tag1"
1 => " tag2"
2 => " tag3"
3 => " tag4"
4 => " tag5"
]
Run Code Online (Sandbox Code Playgroud)
现在我可以通过这样做来实现这一点:
$tags = $expense->tags;
$new_tags = [];
foreach($tags as $tag)
{
$new_tags[] = $tag->name;
}
Run Code Online (Sandbox Code Playgroud)
但是有更清洁的方式,特别是不必使用foreach?我试过这样的事情:
$tags = $expense->tags->value('name')->toArray();
$tags = $expense->tags()->value('name')->toArray();
Run Code Online (Sandbox Code Playgroud)
但两者都不起作用.有没有办法让这个工作?
看看我的下面的例子.
//由于删除内容而被删除
.aside {
position: relative;
float: left;
width: 195px;
top: 0px;
bottom: 0px;
background-color: #ebddca;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到正确的解决方案.我正朝着正确的方向前进.问题是,在上面的"示例#1"中,即使"main"部分中只有几行代码,右侧也会有一个滚动条.我只想在有更多行代码时显示滚动条,如"Example#2"中所示.
我想从我的付款表中返回“金额”的总和。一张发票可以有多次付款。下面的“->sum('amount') 不起作用,它返回:
对非对象调用成员函数 addEagerConstraints()。
如何返回我的关系中每张发票的所有付款总额?
发票型号:
class Invoices extends Eloquent {
public function payments()
{
return $this->hasMany('Payments')->sum('amount');
}
}
Run Code Online (Sandbox Code Playgroud)
费用模型:
class Payments extends Eloquent {
public function invoices()
{
return $this->belongsTo('Invoices');
}
}
Run Code Online (Sandbox Code Playgroud)
我的表“付款”保存表发票的外键,即invoices_id。
我有一个,希望很小,问题。我需要能够直接发布到我的索引。现在我正在使用资源控制器:
Route::resource('appointments', 'AppointmentsController');
Run Code Online (Sandbox Code Playgroud)
而且我希望能够使用下拉列表从我的资源控制器更新我的索引视图以将值发布到我的索引。所以我可以像这样使用这些值:
public function index(Request $request)
Run Code Online (Sandbox Code Playgroud)
直到此时,我使用不同的路由来发布,然后重定向到我的约会.index 路由,依此类推。但那是愚蠢的。我希望仍然能够使用我的资源控制器,否则我需要创建很多路由(因为我使用了一堆资源控制器并且我需要能够直接发布到所有这些的索引)。
解决此问题的最有效方法是什么?我确实尝试使用 url 打开我的表单,然后在末尾添加一个斜杠,但这并没有奏效。
我正在尝试返回一个最大值作为对象的记录.当我这样做:
public function highestExpense()
{
return auth()->user()->expenses()->max('amount');
}
Run Code Online (Sandbox Code Playgroud)
它有效,我获得了最高价值.但我希望返回整个记录,因此我也可以访问费用名称,created_at等.
这不适合我:
return auth()->user()->expenses()->max('amount')->get();
Run Code Online (Sandbox Code Playgroud)
这似乎是一个简单的解决方案,但答案无处可寻.
有没有一种简单的方法使用 Carbon 将日期字符串更改为当前年份?我需要它在我的日历中显示生日。我目前正在刀片视图中执行以下操作:
{{ \Carbon\Carbon::createFromDate('Y-m-d', $contact->birthdate)->format('Y-m-d') }}
Run Code Online (Sandbox Code Playgroud)
问题是,如何将年份更改为当前年份?我一直在从文档中研究这个:
$xmasThisYear = Carbon::createFromDate(null, 12, 25); // Year defaults to current year
Run Code Online (Sandbox Code Playgroud)
但我不知道如何更改现有日期字符串的年份。例如以下示例不起作用:
{{ \Carbon\Carbon::createFromDate('m-d', $contact->birthdate)->format('Y-m-d') }}
Run Code Online (Sandbox Code Playgroud)
任何指示将不胜感激!
我很难理解这个验证规则。基本上,我有两个字段,它们都是nullable. 但是,一旦两个字段都被填满,它们就必须彼此不同。例如,我不能test同时输入它们。如果我填写both字段,则此验证规则有效。
但是,当我只填写one字段时,验证失败,并表示这些字段应该彼此不同,并显示以下消息:
The name and replace must be different.
Run Code Online (Sandbox Code Playgroud)
我检查了提交给我的表单请求的内容,如下:
"name" => null
"replace" => "test"
Run Code Online (Sandbox Code Playgroud)
我的验证规则的精简版本:
public function rules()
{
return [
'name' => 'different:replace|nullable',
'replace' => 'different:name|nullable',
];
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下我对这个验证规则的误解吗?null值不符合此规则吗?
我有一个表单,其中显示四个文本字段输入。当前app()->getLocale()输入显示在左侧,下面的代码适用于显示在右侧的其余 3 个语言环境:
@foreach(['ca','en','es','nl'] as $lang)
@if(app()->getLocale() == $lang) @continue @endif
<li>
<a href="#{{ $lang }}" class="@if($loop->first) active @endif"
</li>
@endforeach
Run Code Online (Sandbox Code Playgroud)
这些都是隐藏的菜单选项卡,只有第一个选项卡应显示为活动状态,因此:
@if($loop->first) active @endif
Run Code Online (Sandbox Code Playgroud)
然而问题是,当当前语言环境是 时ca,语言环境也$loop->first()将是ca。并且这个不能是活动的,因为它永远不会显示在右侧。
我正在尝试找到一个简单的解决方案,而无需太多的if else事情。此外,数组['ca','en','es','nl']将针对来自 的某些数据进行更改config,因此稍后会有更多语言环境,并且ca并不总是第一个。所以我无法进行检查,@if(app()->getLocale() == 'ca')因为这种情况将来也会改变。