Drupal で、「ログから、あるタイプだけのデータから最新のデータを取得する」には、どうしたらいいだろうか?これをソースコード的に言い換えると、「ログ=『watchdog』 テーブルから、カラム 『type』 を絞り込んで、カラム 『timestamp』 の最大値を得る」ということになる。
#Drupal では、ログシステムのことを watchdog と呼んでいる。そのログが入っているテーブル名が watchdog で、SQL 文中では
{watchdog} で表す。
type で指定する文字列を $type とすると、実際のSQL 文は、
SELECT MAX(timestamp) FROM {watchdog} WHERE type=$type; となるだろう。Drupal の場合は、それを db_query 関数で実行してその結果を $result に入れてあげればよいのだが、このままでは MAX(timestamp) の値が $result に入らない。ではどうするかというと、さらに
$max = db_result($result) とする。
以下のコードを参考にして欲しい。
<?php
...
$type = 'your_type';
$result = db_query("SELECT MAX(timestamp) FROM {watchdog} WHERE type='%s'", $type);
$max = db_result($result);
...
?>
トラックバック URL:
https://perltips.twinkle.cc/trackback/173