В Yii, связанные данные могут быть реализованы с помощью концепции "отношений" (relationships) и использования методов Active Record моделей.
Сначала определим две модели, которые будут связаны – например, модель "User" и модель "Post". Давайте предположим, что у каждого пользователя может быть несколько сообщений.
class User extends yiidbActiveRecord { public static function tableName() { return 'user'; } public function getPosts() { // Определяем отношение "hasMany", что означает, что у пользователя может быть несколько сообщений return $this->hasMany(Post::class, ['user_id' => 'id']); } } class Post extends yiidbActiveRecord { public static function tableName() { return 'post'; } public function getUser() { // Определяем отношение "hasOne", что означает, что у сообщения может быть только один пользователь return $this->hasOne(User::class, ['id' => 'user_id']); } }
Теперь, чтобы получить все сообщения, связанные с определенным пользователем, мы можем использовать метод getPosts()
:
$user = User::findOne($user_id); $posts = $user->getPosts()->all();
Или же можно использовать "ленивую загрузку" (lazy loading):
$user = User::findOne($user_id); $posts = $user->posts;
Аналогично, чтобы получить пользователя, связанного с определенным сообщением, можно использовать метод getUser()
:
$post = Post::findOne($post_id); $user = $post->getUser()->one();
Или использовать "ленивую загрузку":
$post = Post::findOne($post_id); $user = $post->user;
Yii также поддерживает другие типы отношений, такие как "many-to-many" и "one-to-many". Для дополнительной информации об этом, вы можете обратиться к документации Yii.
Надеюсь, это поможет вам понять, как реализовать связанные данные в Yii. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!