Laravel 4 中的 Eloquent 调用:处理多个表中的单个列

Posted

技术标签:

【中文标题】Laravel 4 中的 Eloquent 调用:处理多个表中的单个列【英文标题】:Eloquent calls in Laravel 4: Dealing with single columns over multiple tables 【发布时间】:2013-08-20 10:45:45 【问题描述】:

我又回来了另一个 Laravel 问题,我似乎无法用我的程序 php,直接 mysql_query 背景来破解。它基本上涉及多个表的 Eloquent ORM。


我有 3 个表(Users、User_Profiles 和 User_Answers)。 Users 表只保留用户的基本信息(auto_incremented id、电子邮件、密码),User_Profiles 表包含更多详细信息(图片 url、国家、城市、性别等)和属于 User 模型。 User_Answers 表是用户给出的答案列表,也是属于 User 模型的。


我想做的是从 User_Profiles 表中选择城市与登录用户所在城市相同的所有行,将他们的 user_id 放入数组中,然后比较答案(来自 User_Answers 表)对当前登录用户的回答。以下是我想要做的,但使用纯 PHP 和(仅用于解释目的)mysql_query。我提前为糟糕的代码道歉。我只需要指出正确的方向。

<?php

$link = mysql_connect("localhost", "xxx", "xxx");
$db = mysql_select_db('testersize', $link);

$id = 2;
$sql = "SELECT city FROM user_profiles WHERE user_id = $id";
$query = mysql_query($sql, $link);

$row = mysql_fetch_row($query);

$city = $row[0];

echo $city . "</br>";

$sql = "SELECT user_id FROM user_profiles WHERE city = '$city'";
$matches = mysql_query($sql, $link);

//

while($row = mysql_fetch_row($matches))
  $u_id = $row[0];
  $sql = "SELECT books, movies, music FROM user_answers WHERE user_id = $u_id";
  $query2 = mysql_query($sql, $link);
  $row2 = mysql_fetch_row($query2);
  echo "<h2>User Number: " . $u_id . "</h2>";
  echo "your favorite books:" . $row2[0] . "</br>";
  echo "your favorite movies:" . $row2[1] . "</br>";
  echo "your favorite music:" . $row2[2] . "</br>";

?>

【问题讨论】:

【参考方案1】:
$user_ids = User_Profiles::where('city','=',Auth::user()->city)->lists('user_id');
$favorites = User_Answers::whereIn('user_id',$user_ids)->get();
foreach($favorites as $favorite)

    echo $favorite->book;
    echo $favorite->music;
    echo $favorite->movie;

【讨论】:

【参考方案2】:
$user_profiles = User_Profiles::where('city','=',Auth::user()->city)->get();
foreach($user_profiles as $user_profile)
  $id = array('user_id'=>$user_profile->user_id);

因此,该代码将按城市为您获取 user_profiles,然后循环遍历它们并将它们放入一个数组中,但我不确定您所说的匹配用户表的答案是什么意思..

【讨论】:

以上是关于Laravel 4 中的 Eloquent 调用:处理多个表中的单个列的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 Eloquent 动态 Where 子句

Laravel 4:如何将 WHERE 条件应用于 Eloquent 类的所有查询?

如何在Laravel 4中使用Eloquent Model增加列

View 中的 Laravel Eloquent 方法

通过 eloquent 更新 laravel 中的多行

Laravel Eloquent:查找函数执行的操作