使用 OOP PHP ORM 选择查询

Posted

技术标签:

【中文标题】使用 OOP PHP ORM 选择查询【英文标题】:Select Query with OOP PHP ORM 【发布时间】:2016-03-22 08:39:52 【问题描述】:

对于一个客户,我必须对基于 OOP php 的应用程序进行一些调整。我对 OOP 完全没有经验,通常我只将 PHP 用于小功能。我想从我的数据库中选择数据,以在构建函数和变量中使用它。我下面的代码会解释一下

    public function readTwitter()

    $accounts = array();
    $hastags = array('coldplay');

    \ORM::for_table('feed_items')->where('portal_reference', 'tw')->delete_many();

    foreach($accounts as $account) 
        $feed = $this->twitter->getFeedByAccount($account);

        foreach($feed as $post)
            $this->twitter->savePost($post);
        
    

    foreach($hastags as $hashtag) 
        $feed = $this->twitter->getFeedByHashtag($hashtag);

        foreach($feed->statuses as $post)
            $this->twitter->savePost($post);
        
    

所以在这个版本的应用程序中,foreach 循环将检查 var 是否已填充,现在对数组做了什么,并在函数 readTwitter() 中使用它我喜欢的是一个选择查询,它选择我的数据库中的一个特定行来使用它而不是数组,在我的应用程序中作为 OOP 编写如下(用程序 php 编写):

$dbCon = mysqli_connect("localhost", "root", "root", "database");

    if (mysqli_connect_errno()) 
        echo "Failed to connect: " . mysqli_connect_error();
    

$sql = "SELECT * FROM `questions` WHERE `location` = 'wall' ORDER BY `questions`.`id` DESC ";

$query = mysqli_query($dbCon, $sql);
if ($query) 
$row = mysqli_fetch_row($query);

$hashtags = $row[2]; //instead of array('coldplay');

【问题讨论】:

【参考方案1】:
    public function readTwitter()

    $dbCon = mysqli_connect("localhost", "root", "root", "database");

    if (mysqli_connect_errno()) 
        echo "Failed to connect: " . mysqli_connect_error();
    

    $sql = "SELECT * FROM `vragen` WHERE `location` = 'wall' ORDER BY `vragen`.`id` DESC ";

    $query = mysqli_query($dbCon, $sql);
    if ($query) 
        $row = mysqli_fetch_row($query);

    $accounts = $row[3];
    $hashtags = $row[2];

    \ORM::for_table('feed_items')->where('portal_reference', 'tw')->delete_many();


        $feed = $this->twitter->getFeedByAccount($accounts);

        foreach($feed as $post)
            $this->twitter->savePost($post);
        


        $feed = $this->twitter->getFeedByHashtag($hashtags);

        foreach($feed->statuses as $post)
            $this->twitter->savePost($post);
        
    

我尝试合并代码,它可以按我想要的方式工作,但我认为这不是 OOP 的正确方法,对吧?

【讨论】:

以上是关于使用 OOP PHP ORM 选择查询的主要内容,如果未能解决你的问题,请参考以下文章

PHP/MySql - 使用嵌套对象查询对象的最佳方法

php基础知识oop/mvc/orm/aop

Django ORM查询无法选择新对象

PHP ORM 和优化的关系查询

推动 ORM PHP LIKE * 语句

PHP领域类型Java中ibatis的API