Laravel在哪里查询

时间:2015-05-18 03:07:59

标签: laravel

我如何使用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);
?>

9 个答案:

答案 0 :(得分:3)

使用DB :: raw运行原始查询

$ query = DB :: select(DB :: raw(&#34; select movie.title 来自电影 movie.id in (从session.id = $ id和date = $ date的会话中选择session.movi​​e_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.movi​​e_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.movi​​e_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