سلام دوستان
من به اررور خوردم که توی سرچم تا حالا به نتیجه ای نرسیدم اگر کسی میتونه کمک کنه ممنون میشم.ارروری که دارم :
Illegal string offset 'imageThumb' هست.به این صورت که توی یه کنترلرم توی یکی از if هام از queru builder استفاده کردم و در یک if دیگر از elequent. توی foreach من در view تا زمانی که از elequent استفاده میشه و تغذیه میکنه ارروری ندارم اما وقتی از خروجی query builder استفاده میکنم دیتا ها به درستی بر میگرده اما نمیتونه توی foreach بره و این اررور بالا رو میده تو خروجی ها هم در زیر آوردم:
خروجی elquent :
"id" => 12
"national_id" => 961010002
" "color" => "dfdfd"
"personal_signs" => "sdcfdg"
"image" => "{"1":"\/upload\/images\/2017\/home2-2-269x408.jpg","imageThumb":"\/upload\/images\/2017\/home2-2-269x408.jpg"}"
خروجی query bulder:
0 => {#354 ▼
+"id": 12
+"name": "sdfsdf"
+"date_of_birth": "2017-09-12"
+"image": "{"1":"\/upload\/images\/2017\/home2-2-269x408.jpg","imageThumb":"\/upload\/images\/2017\/home2-2-269x408.jpg"}"
+"personal_signs": "sdcfdg"
+"stateId": 18
}
لطفا اگر کسی میتونه کمک کنه.ممنونم.
با توجه به ارور اولی و کد بعدتون باید بگم مقدار imageThumb شما بصورت یک استرینگ هست ولی شما میتوایند بصورت یک آرایه به ایتم های توش دسترسی پیدا کنید و همین موضوع باعث مشکلتون شده
شما باید از ترفند serialize برای تبدیل استرینگ به آرایه استفاده کنید منظورم مقدار زیر هست
+"image": "{"1":"\/upload\/images\/2017\/home2-2-269x408.jpg","imageThumb":"\/upload\/images\/2017\/home2-2-269x408.jpg"}"
برای تبدیل کردن به آرایه هم در مدل مربوطه که این اطلاعات رو بر میگردونه کد زیر رو قرار بدید
protected $casts = [
'image' => 'array', // Will convarted to (Array)
];
بله حتما
کنترلر مربوطه:
public function introducing(Animal $animals){
if(request('state_id') and !empty(request('state_id'))) {
$animals=DB::table('animal')
->join('animal_user', 'animal_user.animal_id', '=', 'animals.id')
->join('users', 'users.id', '=', 'animal_user.user_id')
->join('areas', 'areas.id', '=', 'users.area_id')
->join('cities', 'cities.id', '=', 'areas.city_id')
->join('states', 'states.id', '=', 'cities.state_id')
->select('animals.id','animals.name','animals.date_of_birth','animals.image','animals.personal_signs','states.id as stateId')
->where('states.id','=',request('state_id'));
}
if(request('sub_type') and !empty(request('sub_type')) ) {
$animals = $animals->where('sub_type',request('sub_type'));
}
if(request('race') and !empty(request('race')) ) {
$animals = $animals->where('race',request('race'));
}
$animals=$animals->paginate(6);
if(auth()->user())
{
$user=User::whereId(auth()->user()->id)->first();
return view('site.pages.introducing-animals', compact('user','animals'));
}else
{
return view('site.pages.introducing-animals',compact('animals'));
}
if(request('area_id') or request('sub_type') or request('race')) {
$animals = $animals->getAnimalSearchFildes(request('area_id'),request('sub_type'),request('race'));
}
}
viwe مربوطه :
@foreach($animals as $animal)
@if($animal==[])
<center><a style="color: #9c3328;"></a>نتیجه ای یافت نشد!</center>
@else
<div class="cell-md-4">
<!-- Thumbnail boxed vertical-->
<div class="thumbnail-boxed thumbnail-boxed-vertical">
<a href="/animal/{{$animal->id}}">
<div class="thumbnail-boxed-left"><img class="thumbnail-boxed-image" src="@if($animal->image['imageThumb']!=""){{$animal->image['imageThumb']}}@else images/site/animals/no-image.png @endif" alt="" width="370" height="240"/>
</div>
<div class="thumbnail-boxed-body">
<p class="thumbnail-boxed-title"><a href="{{route('profileAnimal',['id'=>$animal->id])}}">{{str_limit($animal->name,14)}}</a></p>
<div class="thumbnail-boxed-text">
<p>@if($animal->personal_signs){{str_limit($animal->personal_signs,50)}}@endif</p>
</div>
<div class="thumbnail-boxed-footer">
<ul class="thumbnail-boxed-meta">
<li><span class="icon icon-xs icon-tan-hide material-icons-event_available"></span><span>{{\App\Helpers\General::calculate_age_animal($animal->date_of_birth)}}</span></li>
<li><span class="icon icon-xs icon-tan-hide material-icons-library_add"></span><span>{{\App\Animal::getCountWishList($animal->id)}} نفر</span></li>
<li><span class="icon icon-xs icon-tan-hide material-icons-place"></span><span>@if(\App\Animal::getLocationAnimal($animal->id)){!! \App\Animal::getLocationAnimal($animal->id)!!} @else ثبت نشده است @endif</span></li>
</ul>
</div>
</div>
</a>
</div>
</div>
@endif
@endforeach
با توجه به ارور اولی و کد بعدتون باید بگم مقدار imageThumb شما بصورت یک استرینگ هست ولی شما میتوایند بصورت یک آرایه به ایتم های توش دسترسی پیدا کنید و همین موضوع باعث مشکلتون شده
شما باید از ترفند serialize برای تبدیل استرینگ به آرایه استفاده کنید منظورم مقدار زیر هست
+"image": "{"1":"\/upload\/images\/2017\/home2-2-269x408.jpg","imageThumb":"\/upload\/images\/2017\/home2-2-269x408.jpg"}"
برای تبدیل کردن به آرایه هم در مدل مربوطه که این اطلاعات رو بر میگردونه کد زیر رو قرار بدید
protected $casts = [
'image' => 'array', // Will convarted to (Array)
];
بسایر عالی.خیلی خیلی ممنونم از کمکتون جناب موسوی.
یه نکته دیگه که باز من مد نظر قرار نداده بودم این هست که باید query هایی که از ساختار query bulider استفاده میشه برای اینکه این روش جوابگو باشد یعنی :
protected $casts = [
'image' => 'array', // Will convarted to (Array)
];
باید در خورد مدل query زده شود نه در کنترلر
خیلی خیلی ممنون از مهندس موسوی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟