i think from()->document('Document') is a bit awkward (and join is the special case, not the standard case). i would prefer from('Document')->end() with optional ->joinSomething after that. the first from needs no condition. only the join with the next document class, so we could provide the join condition there. and i think having both left and right of a join be another join would start to create funny precedence questions that do not exist in SQL2.

i won't veto against the empty from() but i would much prefer to follow lukas' suggestion.