我如何使用Laravel做到这一点?
<?php
$con = mysqli_connect("localhost","root","","tttwitch");
// Check connection
if (mysqli_connect_error())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM users WHERE username='".$_SESSION['CurrentUser']."' ";
$mydata = mysqli_query($con, $sql);
echo "<table border=1>
<tr>
<th>Username</th>
<th>Password</th>
<th>Email</th>
<th>First Name</th>
<th>Last Name</th>
<th>Telephone</th>
<th>Address</th>
<th>Sex</th>
<th>Date of Birth</th>
</tr>";
while($record = mysqli_fetch_array($mydata)) {
echo "<tr>";
echo "<td>" . $record['username'] . "</td>";
echo "<td>" . $record['psw'] . "</td>";
echo "<td>" . $record['email'] . "</td>";
echo "<td>" . $record['fname'] . "</td>";
echo "<td>" . $record['lname'] . "</td>";
echo "<td>" . $record['telephone'] . "</td>";
echo "<td>" . $record['address'] . "</td>";
echo "<td>" . $record['sex'] . "</td>";
echo "<td>" . $record['dateofbirth'] . "</td>";
}
echo "</table>";
mysqli_close($con);
?>
答案 0 :(得分:3)
使用DB :: raw运行原始查询
$ query = DB :: select(DB :: raw(&#34; select movie.title 来自电影 movie.id in (从session.id = $ id和date = $ date的会话中选择session.movie_id);&#34;));
返回$ query;
答案 1 :(得分:2)
您可以使用laravel的advanced-wheres:
name
答案 2 :(得分:0)
首先,您将需要一个包含电影和会话表的数据库以及Laravel中的两个模型。
电影模型
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Movie extends Model {
protected $fillable = ['title'];
public function sessions()
{
return $this->hasMany('App\Session');
}
}
?>
会话模型
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Session extends Model {
public function movies()
{
return $this->belongsTo('App\Movie','movie_id');
}
?>
Controller中的查询将有一个类似的方法。
public function show($id)
{
try {
$movie = Movie::with('sessions')->where('id',$id)->firstOrFail();
}
catch(ModelNotFoundException $exception)
{
abort(404);
}
return view('movies.show')->withMovie($movie);
}
答案 3 :(得分:0)
但是你使用laravel ORM,它会生成多个查询,我建议你先在会话表中查询并获取列表,然后在电影模型中的where查询中使用该结果。
答案 4 :(得分:0)
$ query =“从影片中选择movie.title,其中movie.id IN(SELECT session.movie_id FROM session WHERE session.id ='”。$ id。“'and date ='”。$ date。“') ;
$ resultSet = DB :: select($ query);
希望这有帮助。
答案 5 :(得分:0)
使用左连接。 例如,
$ first = DB :: session(&#39; movie.title&#39;) - &gt; leftjoin(&#39; session&#39;,&#39; session.movie_id&#39;,&#39; ; =&#39;,&#39; movie.id&#39;) - &gt;其中(&#39; session.id&#39;,&#39; =&#39;,$ id) - &gt;其中,(&#39; session.date&#39;,&#39; =&#39;&#39; $日期&#39;) - &GT;得到();
要检查结果,
DD(第一);
希望这有帮助。
答案 6 :(得分:0)
$query = "SELECT movie.title
FROM movie
WHERE movie.id IN
(SELECT session.movie_id FROM session WHERE session.id = ? and date = ?)";
$movie = \DB::select($query, [$id, $date]);
答案 7 :(得分:0)
使用LEFT JOIN是优化代码的一个很好的选择。否则请检查以下说明。
以下代码行将生成查询以获取影片ID。使用“toSql()”方法将返回查询而不是结果。
$movie_id_qry = DB::table('session')->select('session.movie_id')->whereRaw('session.id = '. $id .' && date = '. $date)->toSql();
可以包含此查询以同样获取电影标题:
$movie_title = DB::table('movies')->where('movie.id', '=', $movie_id_qry)->pluck('movie.title');
结果:echo $ movie_title;
如果找到匹配项,“pluck()”方法将仅返回标题列。 要检索整行,请使用“get()”方法而不是“pluck()”。
由于“toSql()”方法仅生成查询,因此组合的DB提取仅发生在第二行代码中。
希望这有用。
答案 8 :(得分:0)
void func (any arbitrary list of parameters)
{
void func (any arbitrary list of parameters)
{
myNewInsertedLineHere