提问者:小点点

将多到多的原始sql语句转换为雄辩的查询生成器


我需要翻译这个工作sql语句:

select model_names.name
FROM blog_posts 
INNER JOIN model_names_relations
INNER JOIN model_names
ON blog_posts.id = model_names_relations.blog_post_id and model_names.id = model_names_relations.model_name_id
WHERE blog_posts.id = '12'

到laravel查询生成器。我没有使用完整的orm,所以我不能使用belongstomy功能。我仅限于查询生成器。

我试过这个:

$query = ( new DbSql )->db()->table( 'blog_posts' )
        ->join( 'model_names_relations', 'blog_post_id.id', '=', 'model_names_relations.blog_post_id' )
        ->join( 'model_names', 'model_names.id', '=', 'model_names_relations.model_name_id' )
        ->where( 'blog_posts.id', '12')
        ->select( 'model_names.name' )
        ->get();

    var_dump( $query );
    exit;

但这行不通,我明白了:

受保护的消息

什么是正确的转换语法?


共1个答案

匿名用户

这里是Laravel查询生成器

$query =DB::table('blog_posts')
->join('model_names_relations', 'blog_posts.id', '=', 'model_names_relations.blog_post_id')
->join('model_names', 'model_names.id', '=', 'model_names_relations.model_name_id')
->where('blog_posts.id', '12')
->get();

但是,您的错误意味着在blog_post_id表中没有id。