我试图绕过这个,但我似乎是围成一圈.我正在尝试逐个列出用户主题,下面是属于该特定主题的引号.如果这是有道理的.
我有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)
我真的很感激我能得到的任何帮助,或只是一个手指指向正确的方向!
运行 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 中向 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 会有帮助吗?
php ×2
activerecord ×1
codeigniter ×1
dynamics-nav ×1
eloquent ×1
laravel ×1
mysql ×1
navision ×1
soap ×1
sql ×1
wsdl ×1