这是我的问题

$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/

10-16 06:42