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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

get one Element from has_many


3 Posts   1340 Views


Community Member, 65 Posts

10 October 2010 at 12:56am

I have the following structure:

|---Page 1
|---Page 2

where Page 1 & 2 are children of the HolderPage. In my case, my Pages have a "has_many" relation to ImageResources (Images with Title and Caption). Now I'd like to automatically generate a list of the children within my HolderPage (that works really well) and add one (the first) of the ImageResources as a thumbnail to the list-entries on my HolderPage. I tried

function getOneHiglightImage() {
   return $this->HighlightImages("", "SortOrder ASC", null, 1);

within Page.php. For the template of the HolderPage I'm using:

function getChildren() {
      return DataObject::get("Page", "ParentID = $this->ID", "Title ASC", "", "" );


<ul id="List">
         <% control getChildren %>
                   <div class="Photo">
                   <div class="Title">
                      <% control Type %>
                         <a href="$Link" title="$Title">$Title</a>
                      <% end_control %>
                      <a href="$Link" title="$Title">"$Title"</a></div>
                  <div class="Summary">$Content.FirstParagraph</div>
               <div class="ReadOn clearfix">
                  <a href="$Link" title="$Title"><% _t('READMORE','Read more') %> ...</a>
         <% end_control %>

HighlightAttachment is where the Image is stored. But that doesn't work for me. Can someone help me?


Forum Moderator, 474 Posts

10 October 2010 at 12:03pm

Why can't you just use $HighlightImages.First?


Community Member, 65 Posts

11 October 2010 at 12:37am

Because I didn't know that it works that easy ;). Thank you.