小编nie*_*ano的帖子

使用Active Record在CodeIgniter中加入SQL

我试图绕过这个,但我似乎是围成一圈.我正在尝试逐个列出用户主题,下面是属于该特定主题的引号.如果这是有道理的.

我有3个表,如下所示:

[USERS] user_id用户名

[TOPICS] topic_id user_id topic_name

[QUOTES] quote_id topic_id quote_name

我希望能够在我看来做这样的事情:

用户名:托马斯

主题1:无论如何

行情:一个引用,另一个引用和第三个引用,都属于主题1.

主题2:托马斯的另一个话题

行情:是的,好的,谢谢,我喜欢Stack Overflow,这些引用属于主题2.

但我不能让它工作,我一直在尝试一切,包括奇怪的东西,如:

public function get_quotes()
{

    $this->db->select('*');
    $this->db->from('topics');
    $this->db->join('quotes', 'topic_id = quote_id');

    $query = $this->db->get();

    if($query->num_rows() > 0)
    {
        foreach ($query->result() as $row) {
            $data[] = $row;
        }
    }
    return $data;
}
Run Code Online (Sandbox Code Playgroud)

这有点奇怪吗,我应该尝试使用'where'代替吗?就像是:

$this->db->where('user', $user_id);
$this->db->where('topic', $topic_id);
$this->db->where('quote', $quote_id);
Run Code Online (Sandbox Code Playgroud)

我真的很感激我能得到的任何帮助,或只是一个手指指向正确的方向!

php activerecord codeigniter

6
推荐指数
1
解决办法
2万
查看次数

对 DB::raw 和 Eloquent 使用相同查询的不同结果

运行 Eloquent 连接查询时,我得到了一些意想不到的结果。我使用完全相同的查询得到两个不同的结果。第一个使用 DB::raw() 运行,第二个使用 Eloquent。

在 Eloquent 查询中,匹配的用户

where squad_user.leave_time >= seasons.start_time

丢失并且不会包含在结果集中。匹配的用户

or squad_user.leave is null

但是,将被包括在内。

这是两个查询结果的唯一区别。原始查询实际上会生成所需的结果集。

什么真正困扰我的是,如果我检查查询日志,既Laravel的和MySQL,我同时运行原料和雄辩的查询时,得到完全相同的查询。

原始查询(运行 Eloquent 查询时从查询日志中获得的实际查询)

return \DB::select(\DB::raw('
        select users.*
        from users
        inner join squad_user on users.id = squad_user.user_id
        inner join seasons on squad_user.squad_id = seasons.squad_id
        where squad_user.join_time <= seasons.end_time
        and (squad_user.leave_time >= seasons.start_time or squad_user.leave_time is null)
        and seasons.id = :seasonId
    '),
    ['seasonId' => 3]
);
Run Code Online (Sandbox Code Playgroud)

雄辩的查询

return User::join('squad_user', 'users.id', '=', 'squad_user.user_id')
           ->join('seasons', 'squad_user.squad_id', '=', 'seasons.squad_id') …
Run Code Online (Sandbox Code Playgroud)

php mysql sql laravel eloquent

6
推荐指数
1
解决办法
2974
查看次数

Microsoft Dynamics NAV Web 服务中的日期过滤器

在 php 中向 webservice 发送过滤器时一切正常,但是当我们需要对日期进行排序时,我们遇到了问题。我们需要在某个日期之后修改所有对象。

在页面中,我们有一个日期元素,如下所示:

<xsd:element minOccurs="0" maxOccurs="1" name="Last_Date_Modified" type="xsd:date"/>
Run Code Online (Sandbox Code Playgroud)

我们已经尝试了在 SO 上解释的解决方案:

Dynamics Nav (Navision) webservice ReadMultiple date filter

但是我们的日期格式有点不同,我们的看起来像: 2013-01-01

在我们的过滤器中,我们尝试了以下方法:

array(
    'Field' => 'Last_Date_Modified',
    'Criteria' => '20130101..'
)
Run Code Online (Sandbox Code Playgroud)

以及其他一些变体,但它不返回任何内容。如果我们将其留空,它将返回所有内容。有没有人知道我们可以做什么?如果我们以某种方式将 last_modified_date 存储为像 unix 时间戳这样的 bigint 会有帮助吗?

microsoft-dynamics soap wsdl navision dynamics-nav

3
推荐指数
1
解决办法
6202
查看次数