Laravel将数据传递给Array(),然后检查in_array是否抛出错误

问题描述:

嗨,我正在使用Laravel,并从数据库表中提取登录的用户收藏夹。虽然我看到的是我从CMS API获取的文章,但我也在提取已登录的用户收藏夹,但我想检查用户是否已经赞成这篇文章,但是获取了收藏夹并检查UID是否存在在数组中,如果是这样,我会输出一个不同的样式图标。所以,我想我会通过我的数据作为一个数组,然后使用PHP函数in_array但是我得到这个错误:Laravel将数据传递给Array(),然后检查in_array是否抛出错误

Argument 1 passed to Illuminate\Database\Grammar::columnize() 
must be of the type array, string given 

这是怎么了检索我的数据:

//fetch article from cms 
$item = $this->client->fetchPage($id); 
$favourites = Auth::user()->favourites()->get("article_uid")->toArray(); 

,然后在我的视图

@if (in_array($item->uid, $favourites)) 
     Already a favourite 
@else 
{{Form::open(['action'=>['[email protected]',$item->UID]])}} 
    <button type="submit" class="btn btn-danger"><span class="icon-remove-user"></span>Select Favourite</button> 
{{Form::close()}} 
@endif 

我的阵列被输出为这样:

array(3) { 
    [0] = > array(6) { 
     ["id"] = > string(1)"1" ["user_id"] = > string(1)"1" ["article_uid"] = > string(14)"testb" ["deleted_at"] = > NULL["created_at"] = > string(20)"-0001-11-30 00:00:00" ["updated_at"] = > string(20)"-0001-11-30 00:00:00" 
    }[1] = > array(6) { 
     ["id"] = > string(1)"2" ["user_id"] = > string(1)"1" ["article_uid"] = > string(6)"test" ["deleted_at"] = > NULL["created_at"] = > string(20)"-0001-11-30 00:00:00" ["updated_at"] = > string(20)"-0001-11-30 00:00:00" 
    }[2] = > array(6) { 
     ["id"] = > string(1)"3" ["user_id"] = > string(1)"1" ["aritlce_uid"] = > string(18)"testb" ["deleted_at"] = > NULL["created_at"] = > string(19)"2015-02-08 11:25:32" ["updated_at"] = > string(19)"2015-02-08 11:25:32" 
    } 
} 

理想情况下,我想检查article_uid$favourites阵列中的$item->uid。然而,我得到这个错误,我不知道我做错了什么,我认为它是因为我的数组比PHP.net上的标准文档更复杂。在将其传递给视图或其他方法之前,我需要简化它吗?有任何想法吗?

如果你只需要ID作为一个数组,使用lists()

$favourites = Auth::user()->favourites()->lists("article_uid"); 

通过您收到的错误是由你传递一个字符串get()造成的事实的方式。需要传递的阵列(即使它只是一列):

$favourites = Auth::user()->favourites()->get(["article_uid"])->toArray(); 
+0

感谢,这解决了错误和阵列阵列输出作为这样:'阵列(3){[0] =>串(14) “testb”[1] => string(6)“testb”[2] => string(18)“testc”}'我没有改变'in_array'方法,但仍然会输出add favorite按钮事件在数组中 – 001221 2015-02-08 12:03:33

+0

你能回显'$ item-> uid'以确保它保持正确的值吗? – lukasgeiter 2015-02-08 12:05:40

+0

啊应该是$ item-> UID。谢谢! – 001221 2015-02-08 12:08:32