MySQL 列包含 PHP 数组内容,循环
MySQL column contains PHP array content, loop
我正在与 Laravel 5.2 合作。我在 MySQL table 中有一个文本(字符串)列,其中包含一个 PHP 数组,用于像这样的面包屑。
['employee.index' => 'Employees']
根据@weigreen 的建议,我也尝试了 JSON 格式的字符串内容,如下所示:
{'employee.index': 'Employees'}
然后我想在我的 blade
模板中循环遍历它,如下所示:
@if($pageBreadcrumbs)
@foreach($pageBreadcrumbs as $route => $name)
@if ($name == end($pageBreadcrumbs))
<li class="active">{!! $name !!}</li>
@else
<li><a href="{!! route($route) !!}">{!! $name !!}</a></li>
@endif
@endforeach
@endif
但是我没能成功PHP把这个字段的内容解释成一个数组
我尝试了此代码的各种组合:
$breadcrumbsArray = array();
$breadcrumbsArray = $page->breadcrumbs;
View::share('pageBreadcrumbs', $breadcrumbsArray);
和
$breadcrumbsArray = json_decode($page->breadcrumbs);
View::share('pageBreadcrumbs', $breadcrumbsArray);
感谢任何帮助。
尝试转换回 php 对象并使用它。
如果您不转换它,您的数据将被 php 视为字符串。
$breadcrumbsArray = json_decode($page->breadcrumbs);
View::share('pageBreadcrumbs', $breadcrumbsArray);
这个答案真的是@weigreen的。感谢您的帮助。
MySQL 内容的格式应为:
{"employee.index": "Employees"}
然后在我的代码中读取该行时,我会:
$breadcrumbsArray = json_decode($page->breadcrumbs);
View::share('pageBreadcrumbs', $breadcrumbsArray);
完美运行。
使用Eloquent 突变体。 https://laravel.com/docs/master/eloquent-mutators
public function getBreadcrumbsAttribute($value)
{
return json_decode($value, true);
}
这适用于 "page" 的模型。任何时候通过模型访问它都会将其变异为可用数组。 ("true" 的第二个参数强制数组)
其次,您可以使用修改器来设置字段的值。
public function setBreadcrumbsAttribute($value)
{
$this->attributes['breadcrumbs'] = json_encode($value);
}
然后你可以简单地做一些事情
foreach($page->breadcrumbs as $route => $title)...
和
$page->breadcrumbs = [['route' => 'Title'], ['other' => 'Other Title']];
$page->save();
我正在与 Laravel 5.2 合作。我在 MySQL table 中有一个文本(字符串)列,其中包含一个 PHP 数组,用于像这样的面包屑。
['employee.index' => 'Employees']
根据@weigreen 的建议,我也尝试了 JSON 格式的字符串内容,如下所示:
{'employee.index': 'Employees'}
然后我想在我的 blade
模板中循环遍历它,如下所示:
@if($pageBreadcrumbs)
@foreach($pageBreadcrumbs as $route => $name)
@if ($name == end($pageBreadcrumbs))
<li class="active">{!! $name !!}</li>
@else
<li><a href="{!! route($route) !!}">{!! $name !!}</a></li>
@endif
@endforeach
@endif
但是我没能成功PHP把这个字段的内容解释成一个数组
我尝试了此代码的各种组合:
$breadcrumbsArray = array();
$breadcrumbsArray = $page->breadcrumbs;
View::share('pageBreadcrumbs', $breadcrumbsArray);
和
$breadcrumbsArray = json_decode($page->breadcrumbs);
View::share('pageBreadcrumbs', $breadcrumbsArray);
感谢任何帮助。
尝试转换回 php 对象并使用它。
如果您不转换它,您的数据将被 php 视为字符串。
$breadcrumbsArray = json_decode($page->breadcrumbs);
View::share('pageBreadcrumbs', $breadcrumbsArray);
这个答案真的是@weigreen的。感谢您的帮助。
MySQL 内容的格式应为:
{"employee.index": "Employees"}
然后在我的代码中读取该行时,我会:
$breadcrumbsArray = json_decode($page->breadcrumbs);
View::share('pageBreadcrumbs', $breadcrumbsArray);
完美运行。
使用Eloquent 突变体。 https://laravel.com/docs/master/eloquent-mutators
public function getBreadcrumbsAttribute($value)
{
return json_decode($value, true);
}
这适用于 "page" 的模型。任何时候通过模型访问它都会将其变异为可用数组。 ("true" 的第二个参数强制数组)
其次,您可以使用修改器来设置字段的值。
public function setBreadcrumbsAttribute($value)
{
$this->attributes['breadcrumbs'] = json_encode($value);
}
然后你可以简单地做一些事情
foreach($page->breadcrumbs as $route => $title)...
和
$page->breadcrumbs = [['route' => 'Title'], ['other' => 'Other Title']];
$page->save();