【问题标题】:Laravel dynamic keys and values query writingLaravel 动态键值查询编写
【发布时间】:2018-01-05 13:26:37
【问题描述】:

我想用 laravel 写这个查询,谁能帮帮我。我是 laravel 的新手。

public function selectTableData($table,$condition)
{
    try{
        $query = "SELECT * from ".$table;
        if(is_array($condition))
        {
            $query .= " WHERE ";
            foreach ($condition as $key => $value) 
                $query .= $key . "= '".$value."' AND ";
            $query = rtrim($query,'AND ');
        }
        $result = mysql_query($query);
        if (!$result) 
            throw new Exception(mysql_error());
        if (mysql_num_rows($result) > 0) {
           return mysql_fetch_assoc($result);
        }
        else
            return false;
    } catch ( Exception $e ) {
            throw new Exception($e->getMessage ());
    }       
}

还有,我想用 laravel 查询格式编写这段代码

public function insertTableData($table,$data)
{
    try{
        // generate insert query 
        if(is_array($data)){
            $query = 'INSERT INTO '. $table.' ( ';
            foreach ($data as $key => $value) 
                $query .= $key . ',';
            $query = rtrim($query,',');
            $query .= ') VALUES (';
            foreach ($data as $key => $value) 
                $query .= '"'.$value.'",';
            $query = rtrim($query,',');
            $query .= ')';
            $result = mysql_query($query); 
            //if (!$result) {
             //   throw new Exception( 'Could not run query: ' . mysql_error());
            //}
            return $result;
        }
        else
            return false;
    } catch ( Exception $e ) {
            throw new Exception($e->getMessage ());
    }   
}

如果是胶囊格式,那就很好了

【问题讨论】:

  • 你有没有尝试过?究竟是什么不工作?
  • 这段代码对我来说非常有效,我只需要将查询更改为 laravel 查询格式
  • 再一次,您尝试过什么,您在哪里卡住了?这不是代码编写服务。提出确切的问题。
  • 这些是 PHP 纯查询的动态方法,让你头脑清醒,阅读 Laravel 文档

标签: php mysql laravel


【解决方案1】:

你可以像下面这样在 laravel 中编写这个查询。

$query = DB::table($table);
if(is_array($condition)) {
    foreach ($condition as $key => $value) {
        $query->where($key, "'" . $value . "'");
    }
}
$result = $query->get();
if (count($result) > 0) {
    return $result;
} else {
    return false;
}

【讨论】:

    【解决方案2】:

    假设您的 eloquent 模型类是 SomeModel。然后你可以尝试如下第一个查询/方法-

    $query = new SomeModel();
        if(is_array($condition))
        {
            foreach ($condition as $key => $value)
                $query = $query->where($key, $value);
        }
        $result = $query->get();
    

    第二次-

    if(is_array($data)){
            $query = new SomeModel();
            foreach ($data as $key => $value) 
                $query->$key = $value;
            $query->save();        
        }
    

    希望它能解决你的问题:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-27
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多