Thank you Martimiz - Using a ManyManyDataObjectManager instead has definitely put me on the right track.
I am able to manage the many to many relationship as well as access the applicable Product pages from my tab in a ProductCategories page now.
I'm now working through adding an image thumbnail to the ManyManyDOM, as well as allowing the products to be sorted within each applicable category.
I'm following the articles by Aram on SSbits here:
1) DOM cheatsheet -
http://www.ssbits.com/snippets/2010/a-data-object-manager-cheatsheet/
which gives the following code for sorting a many to many relationship:
//many_many sortable objects, with arg1 being the ParentClass and arg2 the Child relation
SortableDataObject::add_sortable_many_many_relation("Page", "MyDataObjects");
I'm using:
SortableDataObject::add_sortable_many_many_relation("ProductCategory", "Products");
as well as this
2) Adding a Thumbnail to a DataObjectManger -
http://www.ssbits.com/snippets/2009/adding-a-thumbnail-to-a-dataobjectmanager-or-complex-table-field/
Unfortunately for both i'm ending up with a long SQL error (wondering if it's a similar problem affecting both):
For starters here's the full error triggered by adding the sortable code to my _config.php:
[User Error] Couldn't run query: SELECT "SiteTree"."ClassName", "SiteTree"."Created", "SiteTree"."LastEdited", "SiteTree"."URLSegment", "SiteTree"."Title", "SiteTree"."MenuTitle", "SiteTree"."Content", "SiteTree"."MetaTitle", "SiteTree"."MetaDescription", "SiteTree"."MetaKeywords", "SiteTree"."ExtraMeta", "SiteTree"."ShowInMenus", "SiteTree"."ShowInSearch", "SiteTree"."HomepageForDomain", "SiteTree"."ProvideComments", "SiteTree"."Sort", "SiteTree"."HasBrokenFile", "SiteTree"."HasBrokenLink", "SiteTree"."Status", "SiteTree"."ReportClass", "SiteTree"."CanViewType", "SiteTree"."CanEditType", "SiteTree"."ToDo", "SiteTree"."Version", "SiteTree"."Priority", "SiteTree"."ParentID", "Product"."Style", "Product"."Price", "Product"."Weight", "Product"."Model", "Product"."FeaturedProduct", "Product"."AllowPurchase", "Product"."InternalItemID", "Product"."NumberSold", "Product".SortOrder AS LocalSort, "Product"."ImageID", "SiteTree"."ID", CASE WHEN "SiteTree"."ClassName" IS NOT NULL THEN "SiteTree"."ClassName" ELSE 'SiteTree' END AS "RecordClassName", CASE WHEN "Product_ProductCategories"."ProductCategoryID" IS NULL THEN '0' ELSE '1' END AS "Checked", COALESCE("Product_ProductCategories"."SortOrder",9999999) AS "MMSort" FROM "SiteTree" LEFT JOIN "Product" ON "Product"."ID" = "SiteTree"."ID" LEFT JOIN "Product_ProductCategories" ON ("SiteTree"."ID" = "ProductID" AND "Product_ProductCategories"."ProductCategoryID" = '10') WHERE ("SiteTree"."ClassName" IN ('Product')) GROUP BY "SiteTree"."ClassName", "SiteTree"."Created", "SiteTree"."LastEdited", "SiteTree"."URLSegment", "SiteTree"."Title", "SiteTree"."MenuTitle", "SiteTree"."Content", "SiteTree"."MetaTitle", "SiteTree"."MetaDescription", "SiteTree"."MetaKeywords", "SiteTree"."ExtraMeta", "SiteTree"."ShowInMenus", "SiteTree"."ShowInSearch", "SiteTree"."HomepageForDomain", "SiteTree"."ProvideComments", "SiteTree"."Sort", "SiteTree"."HasBrokenFile", "SiteTree"."HasBrokenLink", "SiteTree"."Status", "SiteTree"."ReportClass", "SiteTree"."CanViewType", "SiteTree"."CanEditType", "SiteTree"."ToDo", "SiteTree"."Version", "SiteTree"."Priority", "SiteTree"."ParentID", "Product"."Style", "Product"."Price", "Product"."Weight", "Product"."Model", "Product"."FeaturedProduct", "Product"."AllowPurchase", "Product"."InternalItemID", "Product"."NumberSold", "Product"."SortOrder", "Product"."ImageID", "SiteTree"."ID", CASE WHEN "SiteTree"."ClassName" IS NOT NULL THEN "SiteTree"."ClassName" ELSE 'SiteTree' END, CASE WHEN "Product_ProductCategories"."ProductCategoryID" IS NULL THEN '0' ELSE '1' END, COALESCE("Product_ProductCategories"."SortOrder",9999999) ORDER BY "MMSort" ASC, "Checked" DESC, SortOrder LIMIT 0, 10 Unknown column 'Product_ProductCategories.SortOrder' in 'field list'
Any clues...? Again, I definitely appreciate all the help!