我一般来说是Laravel / MVC的新手,如果这是一个愚蠢的问题,非常抱歉。我正在迁移旧的程序应用程序,并试图将“标题,城市,州,国家/地区”的单独的数据库行(通过Eloquent模型获取)作为回音分隔的值。
现在,我现在拥有的Blade模板看起来像这样,虽然有用但很丑陋。
@foreach ($projects as $projects)
{{ $projects->title}}{{ $projects->city? ', '.$projects->city : ""}}{{ $projects->state? ', '.$projects->state : "" }}{{ $projects->country? ', '.$projects->country : "" }}
@endforeach
有一个更好的方法吗?遗留的过程代码将其推入数组并像下面那样进行内推,但是如果我确实进行了数组推入/内推,则我不太确定它是否属于Eloquent模型或控制器。
$tempArray = array();
if($row["city"]) array_push($tempArray, convert_text($row["city"]));
if($row["state"]) array_push($tempArray, convert_text($row["state"]));
if($row["country"]) array_push($tempArray, convert_text($row["country"]));
echo implode(", ", $tempArray);
echo (count($tempArray) > 0)?", ":"";
好吧..这应该工作:
@foreach ($projects as $project)
{{ implode(', ', array_filter([$project->city, $project->state, $project->country])) }}
@endforeach
更新: $project->attributes
受保护,因此我将上面的代码调整为$project->getAttributes()
。
更新2:我错过了排除具有空字符串的属性的要点,因此我添加array_filter()
到上面的代码中以过滤出具有“假”值的属性(例如,空字符串或null
)。
更新3:意识到要按特定顺序分配属性。并且还意识到代码可能要简单得多,因此删除了array_only()
和$project->getAttributes()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句