正如您在下面的代码段中看到的那样,$ similarImages正在传递给视图,但是,可能没有其他类似的图像,这意味着我将传递未定义的变量。这就是为什么只有在$ similarImages存在的情况下,我才需要传递'similarImages' => $similarImages
。
$tag = Tag::whereHas('images', function($q) use ($id) {
return $q->where('image_id', $id);
})->first();
if (!empty($tag)) {
$tagId = $tag->id;
}
$recentImages = Image::where('user_id', $authorId)->orderBy('created_at', 'desc')->limit(9)->get();
if (!empty($tagId)) {
$similarImages = Image::whereHas('tags', function($q) use ($tagId) {
return $q->where('tag_id', $tagId);
})->orderBy('created_at', 'desc')->limit(9)->get();
}
return view('specificImage', ['image' => $image, 'recentImages' => $recentImages, 'similarImages' => $similarImages, 'author' => $author, 'comments' => $comments]);
答案 0 :(得分:3)
使用null-coalescing运算符具有默认值:
CREATE TABLE `app_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`timestamp` datetime NOT NULL,
`user_id` int(11) NOT NULL,
`content_type_id` int(11) NOT NULL,
`object_id` int(10) unsigned NOT NULL,
`status` int(11) DEFAULT NULL,
`type` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `app_log_content_type_id` (`content_type_id`),
KEY `app_log_144dd2a9` (`timestamp`),
KEY `app_log_user_id` (`user_id`, `id`)
)
ENGINE = InnoDB
AUTO_INCREMENT = 108628300
DEFAULT CHARSET = latin1
这将使用$ similarImages(如果已定义),并且不为null,否则将分配由[ .. 'similarImages' => $similarImages ?? collect(), .. ]
创建的空集合。
我喜欢始终将其作为收藏的想法,但这就是我。
答案 1 :(得分:0)
$ array总是传递给视图
如果isset $ similarImages,只需将$ similarImages放入$ array
如果没有isset,则$ similarImages会返回$ array(在这种情况下,刀片服务器中将不存在$ similarImages)
在这里您还可以使用array_add($ array,'similarImages',$ similarImages)
$tag = Tag::whereHas('images', function($q) use ($id) {
return $q->where('image_id', $id);
})->first();
if (!empty($tag)) {
$tagId = $tag->id;
}
$recentImages = Image::where('user_id', $authorId)->orderBy('created_at', 'desc')->limit(9)->get();
if (!empty($tagId)) {
$similarImages = Image::whereHas('tags', function($q) use ($tagId) {
return $q->where('tag_id', $tagId);
})->orderBy('created_at', 'desc')->limit(9)->get();
}
$array = [
'image' => $image,
'recentImages' => $recentImages,
'author' => $author,
'comments' => $comments
];
if (isset($similarImages))
{
$array = array_prepend($array, $similarImages, 'similarImages')
}
return view('specificImage', $array);