Chapters
28 Chapters
|
2:24:59
|
Login to bookmark this video
-
Course Code
Subscribe to download the code!Compatible PHP versions: ^7.1.3
Subscribe to download the code!Compatible PHP versions: ^7.1.3
-
This Video
Subscribe to download the video!
Subscribe to download the video!
-
Subtitles
Subscribe to download the subtitles!
Subscribe to download the subtitles!
-
Course Script
Subscribe to download the script!
Subscribe to download the script!
06.
Fetching Items from a ManyToMany Collection
Scroll down to the script below, click on any sentence (including terminal blocks) to jump to that spot in the video!
Subscribe to jump to this part in the video!
Keep on Learning!
If you liked what you've learned so far, dive in! Subscribe to get access to this tutorial plus video, code and script downloads.
This course is built on Symfony 3, but most of the concepts apply just fine to newer versions of Symfony.
What PHP libraries does this tutorial use?
// composer.json
{
"require": {
"php": "^7.1.3",
"symfony/symfony": "3.4.*", // v3.4.49
"doctrine/orm": "^2.5", // 2.7.5
"doctrine/doctrine-bundle": "^1.6", // 1.12.13
"doctrine/doctrine-cache-bundle": "^1.2", // 1.4.0
"symfony/swiftmailer-bundle": "^2.3", // v2.6.7
"symfony/monolog-bundle": "^2.8", // v2.12.1
"symfony/polyfill-apcu": "^1.0", // v1.23.0
"sensio/distribution-bundle": "^5.0", // v5.0.25
"sensio/framework-extra-bundle": "^3.0.2", // v3.0.29
"incenteev/composer-parameter-handler": "^2.0", // v2.1.4
"composer/package-versions-deprecated": "^1.11", // 1.11.99.4
"knplabs/knp-markdown-bundle": "^1.4", // 1.9.0
"doctrine/doctrine-migrations-bundle": "^1.1", // v1.3.2
"stof/doctrine-extensions-bundle": "^1.2" // v1.3.0
},
"require-dev": {
"sensio/generator-bundle": "^3.0", // v3.1.7
"symfony/phpunit-bridge": "^3.0", // v3.4.47
"nelmio/alice": "^2.1", // v2.3.6
"doctrine/doctrine-fixtures-bundle": "^2.3" // v2.4.1
}
}
24 Comments
Hello. i Need a little help. I have really long loading of my symfony webpage on localhost. FIrewall probably taking the most as u can see on screenshort. Is there someone who probably know how to fix it ? I tryind all thinks from internet but nothing works its taking like 6 seconds to load 1 page and thats bad if u want to test somehing new :) http://imgur.com/a/8X0YO
My controller : https://pastebin.com/1xcSeLjw
Please help me :) Thanks
Hey Marek Burda
Does it happens all the time ? When you clear the cache, the first time you load a page it takes longer because Symfony needs to setup a few things, but after that it should be fast
Yes it happening all the time. I tryid a lot of thigs.. restarting server, changim some things in services or parameters a lot of things from tutorials and forums on internet. But nothing change. Still loading page 6-10 seconds.
Hmm, it is a weird behaviour, in which enviroment are you running, windows, mac, linux ? Try to monitor your resources (htop command if you are on Linux), maybe something is leaking memory
Iam on windows :/ Every other pages are working normaly. Btw i think a projekt which i make before this one, working normaly and i also used same codes and db connections as here...
Okey a fixed it. Problem was in loading javascript and foundation scripts from nonexists files. (I have 1 where is exists and 1 who dont exist) so cose was looking for files who dont exist. But thanks :)
I'm glad to hear you could fix your problem :)
Hey, I've been looking what you did here, but I applied to my own project and didn't work.. I don't know what I am doing wrong.... I have posted the question in stackOverflow but seems that nobody is answering, I need help :( https://stackoverflow.com/q...
Hey Carles,
I see your question on SO was answered correctly, I'm glad you were able to solve this.
Cheers!
Hi,
The download button on this page https://knpuniversity.com/s... is serving the wrong video file, it's serving the EP07 instead of EP06
Hey Abesse,
Oh, I see what you mean here. Actually, if you look closer - it's the same correct video about "Fetching Items from a ManyToMany Collection", but it just has a wrong numbering :)
We'll fix numbering soon, thanks for this report!
Cheers!
Thank you.
Hi.
I have the following ManyToMany relationship:
Posts - Tags.
# AppBundle/Entity/Tag
/**
public function addPosts(Post $post)
/**
# AppBundle/Form/TagType
$builder->add('name');
# AppBundle/Form/PostType
$builder->add(
$builder->create('tags', FormType::class, ['by_reference'=>false]) ->add(
'tag',EntityType::class,[
# app/Resources/views/post/new.html.twig
<div class="form-group">
# AppBundle/Controller/PostController
/**
}
}
Hey Dan!
Ok! A few things:
1) If you can, install XDebug. Or, instead of using print_r, use
dump(). What's happening is that when youprint_rthe tags, you're expecting an array of Tag objects. But in fact, it's an ArrayCollection of Tag objects... and also that ArrayCollection contains a reference to the database connection... and a ton of other stuff. The tl;dr is that if you try toprint_rcertain objects, they will print forever and ever... and kill your browser :). If you install XDebug or (better) use Symfony'sdump(), it avoids this.2) Basically, you're building your "select" element correctly, by using the EntityType for
AppBundle:TagThough, you can simplify your builder code (I don't know if this is the problem, but it looks nicer):NOTICE that I added multiple => true and expanded => false options!
Then, you should simply be printing
{{ form_widget(form.tags) }}.3) Because your PostType is bound to a Post object, and because your PostType has a
tagsfield that uses the EntityType (and because this corresponds with thetagsproperty that you ultimately want to update)... you basically shouldn't need to do anything in your controller. What I mean is:Let me know if this helps! I would try it first without select2 (but using that shouldn't make any difference). What you have here is a pretty traditional ManyToMany form setup - it should end up looking similar to what we have here: http://knpuniversity.com/screencast/collections/entity-type-checkboxes
Cheers!
Wo hoooo! You're a life saviour! It worked! Many thanks!
Hi Guys:
how does the view know genusScientist.id is User ID not genus ID
Is it because of this?
If this is the reason, then I ArrayCollection| Genus [], it would give me genus ID instead. or does it works?
Hey Jian,
If you're talking about PhpStorm autocompletion in templates - yes, it's due to that annotation: "@return ArrayCollection|User[]" for getGenusScientists(). And yes, if you change it to "@return ArrayCollection|Genus[]" (what is not a good idea because getGenusScientists returns collection of *User* not Genus) - you'll get autocompletion for Genus entity instead of User in the template. But it will be just an autocompletion, you still will have *User* object which is autocompleted as Genus object, because there's no magic, getGenusScientists() return collection of genusScientists, i.e. users according to the Doctrine mapping for Genus::$genusScientists property.
P.S. if you want to get Genus ID in that for loop, you can call it on genus variable: {{ genus.id }}.
Cheers!
Thank you Victor! you are always been helpful :)
Hi guys:
I tried to dump the user object. And I could not find any ArrayCollection inside studiedGenuses.
as you can see -elements: [] is empty
How does symfony do the magic and accessing genusStudied.name?
Hey Jian!
When you haven't hydrated a relationship of an object (in this case User - StudiedGenuses), Doctrine creates and sets a "Proxy" into that property via "Reflection" by default, so when you use that property, it magically fetches and hydrates it on the fly with the proper entity object, and then, executes the method you called.
That's why you can see all those extra fields like "initialized"
I hope it helps you ;)
Have a nice day!
Thank you so much, I understand it now Cheer!
Hey folks,
thanks for this awesome site & your style.
Greetings from Germany
Hey Ronny,
Thanks for your warm words!
Cheers!
Haha, cheers! You rock for saying so! Cheers from Michigan, USA!
"Houston: no signs of life"
Start the conversation!