public static function queryRespondedToUserComments(BasicModel $user, $query = null) { $idArray = array(); $comments = static::where(array('user_id' => $user->getKey()))->select(['id'])->get(); foreach ($comments as $comment) { $idArray[] = $comment->id; } if ($query) { return $query->whereIn('commentable_id', $idArray)->where('commentable_type', get_called_class()); } else { return static::whereIn('commentable_id', $idArray)->where('commentable_type', get_called_class()); } }
public static function queryRelatedItemN(BasicModel $item_m, BasicModel $item_n) { $nTableName = $item_n->getTable(); $lTableName = static::getTableName(); $item_m->cache_tags = ['QueryCache-table-' . $lTableName]; return $item_n->select($nTableName . '.*')->join($lTableName, function ($join) use($item_n, $item_m, $nTableName, $lTableName) { $m = static::$nameM; $n = static::$nameN; $join->on("{$lTableName}.{$n}_id", "=", "{$nTableName}." . $item_n->getKeyName())->where("{$lTableName}.{$m}_id", "=", $item_m->getKey())->where("{$lTableName}.{$n}_type", "=", $item_n->getMorphClass())->where("{$lTableName}.{$m}_type", "=", $item_m->getMorphClass()); }); }