如何使用刀片查看多对多关系中的字符串

时间:2015-03-31 17:32:17

标签: php laravel laravel-4 blade

TableOne

id|Topic
1 |football
2 |Rugby
3 |Cricket
4 |Tennis

TableTwo

id|name
1 |bill
2 |tom
3 |Sally

PivotTable

id|name_id|Topic_id
1 |2      |2
2 |2      |3
3 |2      |4
4 |3      |1
5 |1      |4

首先,通过查看下面的代码,我已经定义了我认证的'tom'用户。从上表中我得到以下代码:

 $authuser = Auth::User(); //tom

 foreach ($authuser->usersubject as $chosensubjectname)
  {
      var_dump($chosensubjectname->name);
      }

当我将此输出到浏览器时,上面的代码给出了以下输出:

string(5) "Rugby"  string(7) "Cricket"  string(6) "Tennis"

正如您所看到的,这不是一个数组,因此我不确定如何拆分这三组字符串。谁能告诉我如何在刀片中输出这个而不是作为集合。我的意思是一次一个主题。我只想显示我选择的一个。例如。只是'橄榄球'。 (Laravel 4.2)

顺便提一下,下面的代码定义了TableOne和TableTwo之间的多对多关系。

 public function usersubject(){
        return $this->belongsToMany('SubjectList', 'subjectlists_user', 'name_id', 'Topic_id');
}

提前致谢

1 个答案:

答案 0 :(得分:0)

不得不以回复而非评论的方式发帖。

$authuser->usersubject->toArray()

上面的代码将为您提供一个对象数组而不是一个集合。但是,如果从数据库加载这些内容,您将如何取消变量?如果您尝试列出用户未选择的选项。你可以试试。

DB::table('SubjectList')->whereNotIn('id', array(1, 2, 3))->get();