Php Laravel-代码审查

Php Laravel-代码审查,php,laravel-4,Php,Laravel 4,我正在一个php Laravel项目中进行代码审查。我对这个框架还是比较陌生的。我已经用了1.5年多了。我不知道所有的内部运作,需要一些建议。我喜欢认为我对php有很好的处理能力。我的问题与下面的代码一致。在PHP中,我会对所有内容使用PDO和绑定参数,这段代码似乎缺少它。是否存在任何安全问题?这是在拉威尔4.2 try { $stmt = DB::select('SELECT a.email, a.zipcode, a.is_subscribed, b.no_longer_availa

我正在一个php Laravel项目中进行代码审查。我对这个框架还是比较陌生的。我已经用了1.5年多了。我不知道所有的内部运作,需要一些建议。我喜欢认为我对php有很好的处理能力。我的问题与下面的代码一致。在PHP中,我会对所有内容使用PDO和绑定参数,这段代码似乎缺少它。是否存在任何安全问题?这是在拉威尔4.2

try {
    $stmt = DB::select('SELECT a.email, a.zipcode, a.is_subscribed, b.no_longer_available, b.reduced_price,b.newly_listed
                          FROM users a INNER JOIN user_preferences b ON (a.user_id = b.user_id)
                          WHERE a.user_id = "' . $this->user->user_id . '";');
} catch (Exception $e) {
    return FALSE;
}
您可以看到字符串在函数中且未绑定。在laravel中,不应该使用类似DB::select($sql,$params)的东西吗

第二个问题:下面的代码是否是有效的Laravel代码?我找不到关于它的任何文件

$sql = "UPDATE users a INNER JOIN user_preferences b ON a.user_id = b.user_id
            SET a.is_subscribed = '$is_subscribed',b.no_longer_available = '$no_longer_available',
                b.reduced_price = '$reduced_price', b.newly_listed = '$newly_listed'
            WHERE a.user_id = '$user_id';";

try 
{
    $stmt = DB::update($sql);
    $count = count($stmt);
} catch (Exception $e) {
    return FALSE;
}
假设所有这些$variables都是有效的

is: $stmt = DB::update($sql); even a valid Laravel function/method

你做这件事真的很难。Laravel的设置方式是,你应该从对象的角度来考虑一切。这是一种新的思维方式

因此,显然存在一个用户对象。然后可以创建更多对象并定义它们之间的关系。例如,您可以创建一个新模型,并将其命名为“Preference”,其中包含一个匹配表,该表包含
“user\u id”、“Preference\u name”、“Preference\u value”

然后可以在用户模型中定义关系,如下所示:

public function preferences() {
    return $this->hasMany('App/Preference');
}
现在,您只需使用
$user=user::find(1)获取一个用户
其中1将是用户id。然后您可以使用
$user->preferences()
,这将返回该用户的所有首选项。不需要SQL。塔达!(或者您可以在用户表中添加所有首选项,但这太差劲了)

我真的希望这有助于你的理解

如果你想要更多的信息,我实际上已经在youtube上开始了一个系列


如果您想查看,请查看--

这是错误的。拉雷维尔有自己准备好的声明。