For posterity, a kind soul names Thomas answered my question on stack overflow: http://stackoverflow.com/questions/34073999/laravel-polymorphic-relationship-trouble-with-camel-case
General answer: If you aren't going to follow the standard naming structure, the morphOne method accepts additional parameters that allow you to override it.
public function morphOne($related, $name, $type = null, $id = null, $localKey = null)
{
$instance = new $related;
list($type, $id) = $this->getMorphs($name, $type, $id);
$table = $instance->getTable();
$localKey = $localKey ?: $this->getKeyName();
return new MorphOne($instance->newQuery(), $this, $table.'.'.$type, $table.'.'.$id, $localKey);
}
Without knowing your database structure, all I can tell you is that the 4th argument allows you to override the id. That's where you put locationId.