我不确定我是否可以解释这一点,但它值得一试,因为我真的卡住了。
我要做的是从eventSchedule表中获取与url id匹配的所有内容。在eventSchedule表中,我创建了一个名为eventSponsors的列,该列是一个具有多个赞助商标题的字符串。我试图让所选的eventSchedule仅从Sponsors表中撤回列出的eventSchedule.eventSponosors。我遇到的问题是我为每个eventSchedule设置了多个赞助商,并且在不同的eventSchedule中重复使用了多个赞助商。因此,我可以在两个表之间找到的唯一常见因素是sposnors title。
eventScheduleSeeder
array(
'id' => '1',
'eventSponsors' => 'Enterade Hammer_Nutrition Trek_Bicycle_Store Marathon_High Jacksonville_Running_Company Country_Rocks_the_Beach'
),
sponsorsSeeder
array(
'id' => '7',
'title' => 'Hammer_Nutrition',
'src' => 'images/sponsors/hammer_logo.png',
'alt' => 'Sponsor - Hammer Nutrition',
'url' => 'http://www.hammernutrition.com/'
),
HTML
@foreach($eventDetails as $info)
@foreach($eventSponsors as $sponsors)
<? if(strpos($info->eventSponsors, $sponsors->title) !== false){?>
<p>{{$sponsors->src}}</p>
<?}?>
@endforeach
@endforeach
我回来的结果只是第一个冠军的名字,即Enterade。我读了strpos(),我知道它只找到第一次出现或最后一次出现,但我不知道如何找到标题字符串并用匹配的标题拉回所有内容。
就像我说的那样,我不确定我是否正在解释我的需要,但我愿意更加详细地解释并帮助我们解决这个问题。我是Laravel的新手,可以真正使用帮助。感谢。
答案 0 :(得分:2)
我不确定我是否真的理解你的问题,或者你为什么不使用关系....但我会尝试回答
做这样的事......
$event = EventSchedule::find(1); //get first event
$sponsors = explode(" ", $event->eventSponsors);
$eventTitles = array();
foreach($sponsors as $val){
$eventTitles[] = Sponsors::where('title','=',$val)->get();
}
//Now your eventTitles array has all the associated sponsors for that event.
或者在你看来......
@foreach($event as $val)
<?php $titles = explode(" ", $val->eventSponsors);
foreach($titles as $val2){
$info = Sponsor::where('title','=',$val2)->first();
echo $info->title;
echo "<img src='".$info->src."'>";
}?>