Kev*_*rke 7 php laravel eloquent
我需要使用Laravel进行原始数据库查询:
$results = DB::select("SELECT * FROM members
INNER JOIN (several other tables)
WHERE (horribly complicated thing)
LIMIT 1");
Run Code Online (Sandbox Code Playgroud)
我得到一个普通的PHP StdClass对象,其中包含成员表中属性的字段.我想将它转换为一个成员(一个Eloquent模型实例),看起来像这样:
use Illuminate\Database\Eloquent\Model;
class Member extends Model {
}
Run Code Online (Sandbox Code Playgroud)
我不知道怎么做,因为会员没有设置任何字段,我担心我不会正确初始化它.实现这一目标的最佳方法是什么?
Mop*_*ppo 17
您可以尝试将结果保湿到Model对象:
$results = DB::select("SELECT * FROM members
INNER JOIN (several other tables)
WHERE (horribly complicated thing)
LIMIT 1");
$models = Member::hydrate( $results->toArray() );
Run Code Online (Sandbox Code Playgroud)
或者你甚至可以让Laravel从原始查询中为你自动保湿:
$models = Member::hydrateRaw( "SELECT * FROM members...");
Run Code Online (Sandbox Code Playgroud)
编辑
来自Laravel 5.4的hydrateRaw已不再适用.我们可以使用fromQuery代替:
$models = Member::fromQuery( "SELECT * FROM members...");
Run Code Online (Sandbox Code Playgroud)