口才有疑问

时间:2019-01-27 13:44:53

标签: php laravel eloquent

我遇到此错误:

in_array() expects parameter 2 to be array, object given (View: C:\wamp64\www\partie2-exo\resources\views\index.blade.php)

这是有问题的行:

{!! link_to_route('poll.edit', 'Modifier', [$poll->id], ['class' => 'btn btn-warning btn-block' . (in_array($poll->question, $polls_voted)? ' disabled' : '')]) !!}

此错误来自PollRepository:

$polls_voted = Poll::has('answers')->get();

“ polls_voted”的值应该是获得投票的问题。

3 个答案:

答案 0 :(得分:2)

$polls_votedCollection。一个简单的解决方法是将所有问题pluck()转换为toArray()到数组。

{!! link_to_route('poll.edit', 'Modifier', [$poll->id], ['class' => 'btn btn-warning btn-block' . (in_array($poll->question, $polls_voted->pluck('question')->toArray()) ? ' disabled' : '')]) !!}

答案 1 :(得分:0)

IN_ARRAY()接受参数2为数组。传递的数组应该是非关联的,例如$arr = ["one","two","three"]

答案 2 :(得分:0)

使用Eloquent Builder时,会得到一个对象。那不是一个数组,所以in_array将不起作用。相反,您可以使用toArray()将其更改为数组。像这两个例子

$user = App\User::with('roles')->first();

return $user->toArray();


$users = App\User::all();

return $users->toArray();
  

https://laravel.com/docs/5.7/eloquent-serialization