douzhang7603
2017-06-17 09:26
浏览 53
已采纳

在laravel 5.2中从数据库中获取数据

I am trying to fetch data from database. For that in controller I have created variables for table_name and select_fields as follows -

$tbl_name="user_master";
$select="'user_master.*', 'country.country_name','city.city_name','login_master.email_id','login_master.password'";
$users=$obj->getdata($tbl_name,$select);  

In model I assigned these variables to query as follows -

Model -

public function getdata($tbl_name,$select)
{
    $users = DB::table($tbl_name)
                ->join('country', 'user_master.country_id', '=', 'country.country_id')
                ->join('city', 'user_master.city_id', '=', 'city.city_id')
                ->join('login_master', 'user_master.user_id', '=', 'login_master.user_id')
                ->select($select)
                ->paginate(5);

    return $users;
}

But It is not working. It is showing error- Syntax error or access violation: 1064 You have an error in your SQL syntax;
If I try as -

$users = DB::table('user_master')
                ->join('country', 'user_master.country_id', '=', 'country.country_id')
                ->join('city', 'user_master.city_id', '=', 'city.city_id')
                ->join('login_master', 'user_master.user_id', '=', 'login_master.user_id')
                ->select('user_master.*', 'country.country_name','city.city_name','login_master.email_id','login_master.password')
                ->paginate(5);

return $users;

This above query working fine but when I assign select fields to variable it is not working.
Please help me.
Thanks.

图片转代码服务由CSDN问答提供 功能建议

我正在尝试从数据库中获取数据。 对于控制器中的那个,我已经为table_name和select_fields创建了变量,如下所示 -

  $ tbl_name =“user_master”; 
 $ select =“'user_master。*','country  .country_name”, 'city.city_name', 'login_master.email_id', 'login_master.password'“; 
 $的用户= $ obj->的GetData($ tbl_name,$选择);  
   
 
 

在模型中,我将这些变量分配给查询如下 -

模型 - < pre> public function getdata($ tbl_name,$ select) { $ users = DB :: table($ tbl_name) - &gt; join('country','user_master.country_id','= ','country.country_id') - &gt; join('city','user_master.city_id','=','city.city_id') - &gt; join('login_master','user_master.user_id ','=','login_master.user_id') - &gt;选择($ select) - &gt;&gt; paginate(5); 返回$ users; } < / pre>

但它不起作用。 它显示错误 - 语法错误或访问冲突:1064您的SQL语法出错;
如果我尝试 -

  $ users = DB ::  table('user_master')
  - &gt; join('country','user_master.country_id','=','country.country_id')
  - &gt; join('city','user_master.city_id',  '=','city.city_id')
  - &gt; join('login_master','user_master.user_id','=','login_master.user_id')
  - &gt; select('user_master。*',  'country.country_name','city.city_name','login_master.email_id','login_master.password')
  - &gt;&gt; paginate(5); 
 
return $ users; 
   
 
 

上面的查询工作正常但是当我将选择字段分配给变量时它无法正常工作。
请帮助我。
谢谢。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dragon2025 2017-06-17 09:39
    已采纳

    Your problem is the fact that the coma (,) separating your selection of different table in the select() function is being read as a string, hence it breaks the SQL query. Your select is meant to be like this: select('table1.*', 'table2.someColumn'); Notice the coma is not inside the single quote ''

    So try this:

        $select= ['user_master.*', 'country.country_name', 'city.city_name', 'login_master.email_id', 'login_master.password'];
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题