• Как правильно построить запрос на Doctrine 2 + Symfony 2?

    @curator
    Можно сделать связь OneToOne двусторонней:

    // Entity1, она же table1
    /**
     * @OneToOne(targetEntity="Entity2", mappedBy="parent")
     */
    private $child;
    
    // Entity2, она же table2
    /**
     * @OneToOne(targetEntity="Entity1", inversedBy="child")
     * @JoinColumn(name="table1_id", referencedColumnName="id")
     */
    private $parent;


    И тогда:

    $getParams = $this->getRequest()->query->all();
    
    $params = array_filter($getParams, function($el) {
        return !empty($el);
    });
    
    $queryBuilder = $this->getDoctine()
        ->getRepository('Entity1')
        ->createQueryBuilder('t')
        ->leftJoin('t.child', 'e');
    
    foreach ($params as $key => $val)
    {
        $where = sprintf('e.%s = :%s', $key, $key);
    
        $queryBuilder
            ->andWhere($where)
            ->setParameter($key, $value);
    }
    
    $res = $queryBuilder
        ->getQuery()
        ->getResult();

    Как-то так.
    Ответ написан
    Комментировать
  • Первые шаги в Extjs, кто может помочь?

    1.
    // ...
     renderTo:Ext.getBody()
     // ...


    2. Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на dev.sencha.com/deploy/ext-3.4.0/examples/tree/chec... Это может быть исправлено путем перемещения ресурса в тот же домен или включением CORS.
    Ответ написан
    1 комментарий
  • Как перекодировать восьмеричный UTF-8 в Текст?

    @kalapanga
    Polim: Вообщем вот так желаемая буква 'С' из байтов получается:
    var
    S: RawByteString;
    begin
    SetLength(S,2);
    S[1] := AnsiChar($D0);
    S[2] := AnsiChar($A1);
    Edit1.Text := UTF8ToString(S);
    end;
    Ответ написан
    1 комментарий
  • Как включить подсветку слов в PhpStorm?

    leealex
    @leealex
    Веб разработчик
    Мне сегодня понадобилась такая же функция (привык в Notepad++ двойным кликом выделять одинаковые слова).
    В PHPStorm просто создал хоткей с двойным кликом (у меня например CTRL + ALT + DoubleClick), теперь двойной клик с зажатым контрол и альт по любому слову выделяет все такие же слова (не обязательно переменные).
    Settings -> Keymap -> Find -> ваша_комбинация_с_кликом
    4663d6a9e9a847f5844cdc6dff1ed997.png
    Ответ написан
    1 комментарий
  • Хочу научиться создавать плагины JQuery - с чего начать?

    Вот хорошая заготовка для написания плагина.

    /*
     *  jQuery Boilerplate - v3.3.4
     *  A jump-start for jQuery plugins development.
     *  http://jqueryboilerplate.com
     *
     *  Made by Zeno Rocha
     *  Under MIT License
     */
    // the semi-colon before function invocation is a safety net against concatenated
    // scripts and/or other plugins which may not be closed properly.
    ;(function ( $, window, document, undefined ) {
    
    		// undefined is used here as the undefined global variable in ECMAScript 3 is
    		// mutable (ie. it can be changed by someone else). undefined isn't really being
    		// passed in so we can ensure the value of it is truly undefined. In ES5, undefined
    		// can no longer be modified.
    
    		// window and document are passed through as local variable rather than global
    		// as this (slightly) quickens the resolution process and can be more efficiently
    		// minified (especially when both are regularly referenced in your plugin).
    
    		// Create the defaults once
    		var pluginName = "defaultPluginName",
    				defaults = {
    				propertyName: "value"
    		};
    
    		// The actual plugin constructor
    		function Plugin ( element, options ) {
    				this.element = element;
    				// jQuery has an extend method which merges the contents of two or
    				// more objects, storing the result in the first object. The first object
    				// is generally empty as we don't want to alter the default options for
    				// future instances of the plugin
    				this.settings = $.extend( {}, defaults, options );
    				this._defaults = defaults;
    				this._name = pluginName;
    				this.init();
    		}
    
    		// Avoid Plugin.prototype conflicts
    		$.extend(Plugin.prototype, {
    				init: function () {
    						// Place initialization logic here
    						// You already have access to the DOM element and
    						// the options via the instance, e.g. this.element
    						// and this.settings
    						// you can add more functions like the one below and
    						// call them like so: this.yourOtherFunction(this.element, this.settings).
    						console.log("xD");
    				},
    				yourOtherFunction: function () {
    						// some logic
    				}
    		});
    
    		// A really lightweight plugin wrapper around the constructor,
    		// preventing against multiple instantiations
    		$.fn[ pluginName ] = function ( options ) {
    				this.each(function() {
    						if ( !$.data( this, "plugin_" + pluginName ) ) {
    								$.data( this, "plugin_" + pluginName, new Plugin( this, options ) );
    						}
    				});
    
    				// chain jQuery functions
    				return this;
    		};
    
    })( jQuery, window, document );
    Ответ написан
    Комментировать