【发布时间】:2015-02-23 04:49:44
【问题描述】:
这是我的查询
$TagDatas = TagModel::whereIn('TagId', array($BlogData->Tagged))->get();
$BlogData->Tagged 的值为 1,2,3(不是数组,而是字符)
这是我的模型
<?php
class TagModel extends Eloquent
{
protected $primaryKey = 'AutoID';
protected $table = 'tag';
那我做
@foreach($TagDatas as $TagData)
{{ $TagData->TagName }}
@endforeach
它只显示标签表中的第一个元素
即使我调试时它也会显示给我
select * from `tag` where `TagId` in (1,2,3)
我错过了什么?
【问题讨论】:
-
如果
$BlogData->Tagged是一个字符串,那么在使用whereIn()之前将其分解为一个数组,否则它将被视为一个文字字符串...... Laravel使用准备好的语句,所以bindvar将是一个字符串:语句应该是select * from `tag` where `TagId` in (?),并且是一个1,2,3的单个bindvar -
我应该做 $myArray = explode(',', $BlogData->Tagged); 吗?
-
$TagDatas = TagModel::whereIn('TagId', explode(',', $BlogData->Tagged))->get(); -
完成了!谢谢。您能否将其发布为带有一点解释的答案!因为它帮助了我
标签: php mysql laravel laravel-4 eloquent