Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Data Model Questions /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Page Relations: $has_one Using Dropdown Map - Not Saving to Field

Go to End

2 Posts   2264 Views


Community Member, 245 Posts

1 March 2012 at 5:52am


I am struggling getting a relationship set up in my database. Was hoping some gurus might be able to help a brutha out. Here's the deal. I have a Client pagetype:

class Client extends Page {
        static $db = array(
		"Sectors" => "Text",
		"IsActive" => "Text",
		"ExternalURL" => "Text"
	static $has_one = array(
		"ClientHolder" => "ClientHolder",
		"Logo" => "Image"

Then I have a NewsPage pagetype which contains a Client field:

class NewsPage extends Page {
    static $has_one = array(
        "Client" => "Client"

This creates a field "ClientID" in the NewsPage table, as expected. Now, in order to select the related client on a News Page in the CMS, I create a dropdown of the available Client objects in the system:

$clients = Page_Controller::GetClients();
$client_dropdownfield = new DropdownField("ClientID", "Client", $clients->toDropDownMap("Title", "Title"),null,null,"");
$fields->addFieldToTab("Root.Content.Main", $client_dropdownfield, "Content");

...And the function that gets the Clients:

class Page_Controller extends ContentController {
    public function GetClients() {
        return DataObject::get("Client", "","Title ASC","","");

However, when I save a NewsPage, the ClientID is always 0. It is not saving anything in this field. What am I doing wrong? I thought this would behave just like when you save a LinkedPageID from a SimpleTreeDropdownField. How do I create this relation properly?



Community Member, 78 Posts

4 March 2012 at 6:18am

Hi Garret,

try to change the field name from ClientID to Client:

$client_dropdownfield = new DropdownField("Client", "Client", $clients->toDropDownMap("Title", "Title"),null,null,"");

because the named relation is "Client"