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 -

$select="'user_master.*', 'country.country_name','city.city_name','login_master.email_id','login_master.password'";

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')

    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')

return $users;

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

图片转代码服务由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'];
    解决 无用
    打赏 举报

相关推荐 更多相似问题