这是我的问题
$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)
我错过了什么?
最佳答案
如果将字符串值传递给wherein()
,则在雄辩地准备其绑定时,它将被视为文本字符串,因此实际执行的语句将
select * from `tag` where `TagId` in ('1,2,3')
您需要将每个值1、2和3作为单独的数组项传递,以便正确绑定它们
$TagDatas = TagModel::whereIn('TagId', explode(',', $BlogData->Tagged))
->get();
因此,其中将把这三个元素作为单独的数组元素,给出一个
select * from `tag` where `TagId` in (1, 2, 3)
关于php - Laravel Eloquent 精选问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27647564/