Ответы пользователя по тегу Kohana
  • Kohana 3.1.4 проблема с роутингом загружается только стартовая страница?

    AmberLEX
    @AmberLEX
    php/web-developer
    Встречал хостинги где были такие настройки чтоб работало, попробуйте, по идее можно найти проблему на форуме хостинга или в техподдержке.

    # Rewrite all other URLs to index.php/URL
    RewriteRule .* index.php/$0 [PT]

    # hostinger.com.ua
    #RewriteRule ^(.*)$ index.php?/$1 [PT]

    # ukraine.com.ua
    #RewriteRule .* index.php?kohana_uri=$0 [PT,L,QSA]

    Или VirtualHost настройте, если есть доступ
    Ответ написан
    Комментировать
  • Kohana ORM связь has_many и подкатегории правильное отображение?

    AmberLEX
    @AmberLEX
    php/web-developer
    Можно так, мысль понятна, думаю, если и я правильно понял вопрос :)
    Можно добавить и id родителя, если че.
    Ну и методы в моделях, а не как тут :)

    c976f5a581724a03bab82df1345a37c8.png9d97e9049f3a47c0afd59503b59ee194.pngdb9bf4e79cab4b60a8b4e7ba1fc9edc0.png
    class Model_Category extends ORM
    {
    	protected $_table_name = 'categories';
    
    	protected $_has_many = array
    	(
    		'subs' => array(
    			'model' => 'Category',
    			'foreign_key' => 'parent_id',
    		),
    		'apps' => array(
    			'model' => 'App',
    			'through' => 'categories_apps',
    			'foreign_key' => 'category_id',
    			'far_key' => 'app_id',
    		),
    	);
    }

    class Model_App extends ORM
    {
    	protected $_table_name = 'apps';
    
    	protected $_has_many = array
    	(
    		'categories' => array(
    			'model' => 'Category',
    			'through' => 'categories_apps',
    			'foreign_key' => 'app_id',
    			'far_key' => 'category_id',
    		),
    	);
    }

    class Controller_Welcome extends Controller
    {
    	public function action_index()
    	{
    		$id = 1;
    
    		// Variant 1
    		$subs_ids = $this->get_subs_ids_v1($id);
    		$this->show_subs_ids($subs_ids);
    		$this->show_apps($subs_ids);
    
    		// Variant 2
    		$subs_ids = $this->get_subs_ids_v2($id);
    		$this->show_subs_ids($subs_ids);
    		$this->show_apps($subs_ids);
    	}
    
    	private function get_subs_ids_v1($id)
    	{
    		// --------
    		// Category
    		$category = ORM::factory('Category', $id);
    
    		if ( ! $category->loaded())
    			throw new HTTP_Exception_404;
    
    		echo 'Category: ' . $category->title . '<br/>';
    
    		// ------------------
    		// Sub-Categories ids
    		return $category
    			->subs
    			->find_all()
    			->as_array(NULL, 'id');
    	}
    
    	private function get_subs_ids_v2($id)
    	{
    		// ------------------
    		// Sub-Categories ids
    		return ORM::factory('Category')
    			->where('parent_id', '=', $id)
    			->find_all()
    			->as_array(NULL, 'id');
    	}
    
    	private function show_subs_ids($subs_ids)
    	{
    		echo '<pre>' . print_r($subs_ids, TRUE) . '</pre>';
    	}
    
    	private function show_apps($subs_ids)
    	{
    		// $subs_ids может быть пустым, нужна дополнительная проверка,
    		// чтобы where IN не выдало шибку
    		$apps = ORM::factory('App')
    			->join('categories_apps')
    			->on('categories_apps.app_id', '=', 'app.id')
    			->where('categories_apps.category_id', 'IN', $subs_ids)
    			->find_all();
    
    		foreach ($apps as $app)
    			echo 'App: ' . $app->title . '<br/>';
    	}
    }

    Category: cat-1
    
    Array
    (
        [0] => 2
        [1] => 3
        [2] => 4
    )
    
    App: app-1
    App: app-2
    App: app-3
    App: app-4
    App: app-5
    App: app-6
    
    Array
    (
        [0] => 2
        [1] => 3
        [2] => 4
    )
    
    App: app-1
    App: app-2
    App: app-3
    App: app-4
    App: app-5
    App: app-6
    Ответ написан
    Комментировать