我正在尝试为单个SQL表中的不同过滤行创建一个具有不同ul的页面。我一直在尝试并搜索最近几个小时,以了解如何使用“ with”为视图提供多个数组,我将直接发布代码,以便可以更好地了解我的想法。正在尝试做。对于每个使用不同SQL参数的数组,我不确定如何将它们全部收集到一个变量中,因此我决定将其作为数组传递]
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Activity;
class ActivityController extends Controller
{
public function index (){
$activities[] = [
'yearlies' => Activity::all()
->where('activity_feature_type', 'yearly')
->sortByDesc('activity_daily_budget')
->take(6),
'monthlies' => Activity::all()
->where('activity_feature_type', 'monthly')
->sortByDesc('activity_daily_budget')
->take(4),
'weeklies' => Activity::all()
->where('activity_feature_type', 'weekly')
->sortByDesc('activity_daily_budget')
->take(4),
];
return view('activities')->with('activities', $activities);
}
}
在客户端,我想遍历每个变量以将其放入每个UL中
<div class="row pt-2">
@if(count($yearlies) > 0)
@foreach($activities['yearlies'] as $yearly)
<div class="col-sm-2">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="img/{{$yearly->activity_picture_link}}" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{$yearly->name}}</h5>
<p class="card-text">{{$yearly->activity_desc_short}}</p>
</div>
<ul class="list-group list-group-flush">
@if ($yearly->activity_free === true)
<li class="list-group-item"><h6 class="font-weight-bold">Free</h6></li>
@else
<li class="list-group-item"><h6 class="font-weight-bold">${{$yearly->activity_low_cost}} - ${{$yearly->activity_high_cost}}</h6></li>
@endif
</ul>
<div class="card-body">
<a href="/activities/{{$yearly->id}}" class="card-link">View Activity</a>
<a href="/" class="card-link float-right">Save</a>
</div>
</div>
</div>
@endforeach
@else
<h5 class="text-secondary text-center">No yearlies available</h5>
@endif
</div>
希望我正在尝试做的事情很明显。无论如何,我一直在搜索,我所看到的只是关于集合的内容,但是我没有亲自定义不同的子值,因此我无法利用它们执行的=>功能。任何帮助表示赞赏。
编辑:以下是$ activities的dd,我想知道如何通过此导航到每年的行
array:1 [▼
0 => array:3 [▼
"yearlies" => Illuminate\Database\Eloquent\Collection {#262 ▼
#items: array:1 [▼
0 => App\Activity {#295 ▼
#table: "activities"
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:14 [▼
"id" => 1
"name" => "name"
"activity_desc_short" => "desc"
"activity_desc" => "desc"
"activity_free" => 0
"activity_low_cost" => "10.50"
"activity_high_cost" => "20.50"
"activity_feature_type" => "yearly"
"activity_daily_budget" => "3.00"
"activity_picture_link" => null
"activity_posting_business" => ""
"location" => null
"created_at" => "2020-01-16 21:22:18"
"updated_at" => "2020-01-16 21:22:18"
]
#original: array:14 [▶]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
]
}
"monthlies" => Illuminate\Database\Eloquent\Collection {#288 ▶}
"weeklies" => Illuminate\Database\Eloquent\Collection {#298 ▶}
]
]
div class="row pt-2">
@if(count($yearlies) > 0)
@foreach($activities->yearlies as $yearly)
<div class="col-sm-2">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="img/{{$yearly->activity_picture_link}}" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{$yearly->name}}</h5>
<p class="card-text">{{$yearly->activity_desc_short}}</p>
</div>
<ul class="list-group list-group-flush">
@if ($yearly->activity_free === true)
<li class="list-group-item"><h6 class="font-weight-bold">Free</h6></li>
@else
<li class="list-group-item"><h6 class="font-weight-bold">${{$yearly->activity_low_cost}} - ${{$yearly->activity_high_cost}}</h6></li>
@endif
</ul>
<div class="card-body">
<a href="/activities/{{$yearly->id}}" class="card-link">View Activity</a>
<a href="/" class="card-link float-right">Save</a>
</div>
</div>
</div>
@endforeach
@else
<h5 class="text-secondary text-center">No yearlies available</h5>
@endif
</div>
尝试一下
当您在一个数组变量中发送值时,这意味着它是多维数组。
也代替
$activities[] = [
'yearlies' => Activity::all()
->where('activity_feature_type', 'yearly')
->sortByDesc('activity_daily_budget')
->take(6),
'monthlies' => Activity::all()
->where('activity_feature_type', 'monthly')
->sortByDesc('activity_daily_budget')
->take(4),
'weeklies' => Activity::all()
->where('activity_feature_type', 'weekly')
->sortByDesc('activity_daily_budget')
->take(4),
];
使用
$activities = [
'yearlies' => Activity::all()
->where('activity_feature_type', 'yearly')
->sortByDesc('activity_daily_budget')
->take(6),
'monthlies' => Activity::all()
->where('activity_feature_type', 'monthly')
->sortByDesc('activity_daily_budget')
->take(4),
'weeklies' => Activity::all()
->where('activity_feature_type', 'weekly')
->sortByDesc('activity_daily_budget')
->take(4),
];
这将减少数组的复杂度。
也,在您的blade
文件中-
<div class="row pt-2">
@if(isset($activity) || $activity != null)
@foreach($activities['yearlies'] as $yearly)
<div class="col-sm-2">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="img/{{$yearly->activity_picture_link}}" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{$yearly->name}}</h5>
<p class="card-text">{{$yearly->activity_desc_short}}</p>
</div>
<ul class="list-group list-group-flush">
@if ($yearly->activity_free === true)
<li class="list-group-item"><h6 class="font-weight-bold">Free</h6></li>
@else
<li class="list-group-item"><h6 class="font-weight-bold">${{$yearly->activity_low_cost}} - ${{$yearly->activity_high_cost}}</h6></li>
@endif
</ul>
<div class="card-body">
<a href="/activities/{{$yearly->id}}" class="card-link">View Activity</a>
<a href="/" class="card-link float-right">Save</a>
</div>
</div>
</div>
@endforeach
@else
<h5 class="text-secondary text-center">No yearlies available</h5>
@endif
</div>
我想这会很好。如果我错了,请纠正我。希望这对您有用。