我需要翻译这个有效的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,因此我无法使用属于该功能的功能。我被限制在查询构建器中。
我试过了:
$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;
但它得不到我的工作:
受保护的邮件' =>字符串' SQLSTATE [42S22]:找不到列:1054未知列' blog_post_id.id'在' on条款' (SQL:从
model_names
上的name
内部加入blog_posts
选择model_names_relations
。blog_post_id
。id
=model_names_relations
。{{1内部联接blog_post_id
位于model_names
。model_names
=id
。model_names_relations
其中model_name_id
。blog_posts
= 12)&# 39; (长度= 357) 私人'字符串' (例外)=>字符串'' (长度= 0)
正确的转换语法是什么?
答案 0 :(得分:2)
这是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”。