0

手続き型の PHP、直接の mysql_query のバックグラウンドではクラックできないように見える別の Laravel の問題に戻ってきました。これには基本的に、複数のテーブルに対する 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>";
}
?>
4

2 に答える 2

0
$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 を取得し、それらをループして配列に入れますが、ユーザーテーブルへの回答を一致させることで何を意味するのかわかりません..

于 2013-08-18T16:50:04.360 に答える
0
$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;
}
于 2013-08-19T12:28:20.223 に答える