Php 如何仅在定义数据时将其传递给视图?
正如您在我下面的代码中所看到的,$similarImages正在传递给视图,但是,可能没有其他类似的图像,这意味着我将传递一个未定义的变量。这就是为什么只有在存在$similarImages时,我才需要传递Php 如何仅在定义数据时将其传递给视图?,php,laravel,Php,Laravel,正如您在我下面的代码中所看到的,$similarImages正在传递给视图,但是,可能没有其他类似的图像,这意味着我将传递一个未定义的变量。这就是为什么只有在存在$similarImages时,我才需要传递'similarImages'=>$similarImages $tag = Tag::whereHas('images', function($q) use ($id) { return $q->where('image_id', $id); }
'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]);
使用null合并运算符可获得默认值:
[ .. 'similarImages' => $similarImages ?? collect(), .. ]
如果定义了$similarImages,则它将使用$similarImages,否则它将分配由collect()
创建的空集合
我喜欢它总是被收藏的想法,但那只是我 使用空合并运算符来获得默认值:
[ .. 'similarImages' => $similarImages ?? collect(), .. ]
如果定义了$similarImages,则它将使用$similarImages,否则它将分配由collect()
创建的空集合
我喜欢它总是被收藏的想法,但那只是我 $array始终传递给视图 如果设置了$similarImages,只需将$similarImages前置到$array中即可 如果没有设置$similarImages,只返回$array(在这种情况下,$similarImages将不存在于blade中) 这里还可以使用array_add($array,'similarImages',$similarImages)
$array始终传递给视图 如果设置了$similarImages,只需将$similarImages前置到$array中即可 如果没有设置$similarImages,只返回$array(在这种情况下,$similarImages将不存在于blade中) 这里还可以使用array_add($array,'similarImages',$similarImages)
['image'=>$image,'recentImages'=>$recentImages,'author'=>$author,'comments'=>$comments]+(isset($similarImages)?['similarImages'=>$similarImages]:[])
有时我会设置一个空的默认值或更改返回视图。。。。code首先将其定义为函数顶部附近的$similarImages=null
。是否确实希望在视图中未定义它?还是空?还是一个空的集合?我很少认为不定义它是个好主意。嘿,德文,这就是为什么我要问只有定义了它才能通过它的原因。Aynber的想法非常有效。['image'=>$image,'recentImages'=>$recentImages,'author'=>$author,'comments'=>$comments]+(isset($similimages)?['similimages'=>$similimages]:[])
是我有时会设置一个空的默认值或更改返回视图的东西。。。。code首先将其定义为函数顶部附近的$similarImages=null
。是否确实希望在视图中未定义它?还是空?还是一个空的集合?我很少认为不定义它是个好主意。嘿,德文,这就是为什么我要问只有定义了它才能通过它的原因。Aynber的想法很管用。collect()在这种情况下做什么?创建一个空集合,因此您可以始终相信它在视图中是一个集合。因为我不熟悉集合,所以我尝试通过google ing collect()阅读一些文档,但似乎找不到任何内容。无论何时使用查询生成器使用get()
,您将返回一组模型collect()
是一个特定于Laravel的函数,用于将数组
转换为集合
,后者是包装器/帮助器类。请参见此处collect()在本例中的作用?创建一个空集合,因此您可以始终相信它在视图中是一个集合。由于我不熟悉集合,我尝试使用google ing collect()阅读一些文档,但似乎找不到任何内容。无论何时您使用查询生成器使用get()
,您将返回一组模型collect()
是一个特定于Laravel的函数,用于将数组
转换为集合
,后者是包装器/帮助器类。看这里试着提供一个解释;只有代码的答案提供的解决方案可能不会对所有用户都很明显,因此对您所做的更改进行简短的解释将大有帮助;只使用代码的答案提供的解决方案可能不会对所有用户都很明显,因此对您所做的更改进行简短的解释将大有帮助。