Laravel加入表

时间:2013-06-24 14:39:28

标签: php mysql laravel laravel-4

我不确定我是否可以解释这一点,但它值得一试,因为我真的卡住了。

我要做的是从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的新手,可以真正使用帮助。感谢。

1 个答案:

答案 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."'>";
     }?>