2016-06-06 4 views
1

Laravel 5.2에서 작업하고 있습니다. 이 breadcrumbs에 대한 PHP 배열을 포함하는 MySQL 테이블에 텍스트 (문자열) 열이 있습니다.MySQL 열에 PHP 배열 내용이 포함되어 있습니다. 루프

{'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 
@weigreen에 의해 제안에

['employee.index' => 'Employees'] 

는이 같은 문자열 콘텐츠를 JSON 형식도 시도

하지만이 필드의 내용을 배열로 해석하기 위해 PHP를 성공적으로 가져올 수 없었습니다.

$breadcrumbsArray = array(); 
$breadcrumbsArray = $page->breadcrumbs; 
View::share('pageBreadcrumbs', $breadcrumbsArray); 

$breadcrumbsArray = json_decode($page->breadcrumbs); 
View::share('pageBreadcrumbs', $breadcrumbsArray); 

어떤 도움에 감사드립니다 :

이 코드의 다양한 조합을 시도했다.

+0

같은 일을 할 수 있습니까? 문자열로? – weigreen

+0

안녕하세요 @ 웨이트린, 네, 문자열. – TheRealPapa

+0

'$ breadcrumbsArray = $ page-> breadcrumbs; '라고 생각하지 않는다면 JSON 문자열로 데이터를 저장할 수 있을까요? – weigreen

답변

1

PHP 개체로 다시 변환하여 사용하십시오.

변환하지 않으면 데이터가 PHP에 의해 문자열로 표시됩니다.

$breadcrumbsArray = json_decode($page->breadcrumbs); 
View::share('pageBreadcrumbs', $breadcrumbsArray); 
+0

안녕하세요 @weigreen, 방금 너무 노력했습니다. 이제는 내 코드가 실패하지 않지만 빵 부스러기는 생성되지 않습니다.'json_decode'의 결과는 전달 된 내용이 정확하더라도'null '입니다.'{'client.index ':'Clients '}' – TheRealPapa

+0

@TheRealPapa json 문자열을 얻기 위해'json_encode'를 사용하십시오. 나는'{ "client.index": "Clients"}'를 사용하면 그것을 시도했다.'그것은 작동한다. (문자열에 ** 큰 따옴표 **를 사용 ** – weigreen

0

이 답변은 정말 @ 엽서입니다. 도와 줘서 고마워. MySQL의 내용

형식이어야합니다 : 내 코드에서 다음

{"employee.index": "Employees"} 

행을 읽는

, 내가 할 :

$breadcrumbsArray = json_decode($page->breadcrumbs); 
View::share('pageBreadcrumbs', $breadcrumbsArray); 

작품을 완벽하게.

0

Eloquent Mutators를 사용하십시오. 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(); 
+0

안녕하세요 @ 젤리스 (또는 나는 튤 란 더라고해야합니까?) 어때요? – TheRealPapa

+0

놀랍게도 '똥개없이'엘 싯 토스 크릭 스를 올렸습니다. 그러나 나는 아주 살아 있습니다! – jellis