先說明一下情境
我有一張表內有5個欄位跟userid有關的。
DB:test
id uid1 uid2 uid3 uid4 uid5
在其test表中,我暫時先用
public function user1()
{
return $this->hasOne('App\Models\user\user', 'id', 'uid1');
}
public function user2()
{
return $this->hasOne('App\Models\user\user', 'id', 'uid2');
}
.........(以下省略)
其實用以上的方式是可以解決我的問題了。
不過我還是想要問一下看看有沒有可能有更省略的一次性寫法。
不要5個uid就要寫5個關聯,10個uid就要10個。
老人我比較想追求更好的寫法,看有沒有人可以教教一下。
後續的處理,其實有找到我想要的寫法。還找出了3套方式。
很感謝一些人跟我一起研究。
可惜的是,這三套方式是沒辦法跟原來的效能相比較。
其中一招還大大的增加查尋時間。
所以我最後下結論:
看樣子不太可能如我想像的寫法了。除非改寫核心增加新的方式處理。
(這點就不需要了,改版會很痛苦)
反正原來的關聯方式,也不過是多打幾個字,且變動機率也不高。
就......結案吧。
我保留到明天看看有沒有人可以想出更好的方法。
如果在同一張表你可以用
user_id當作主key
例如你有一個user table
他有
id name textA textB
另一個 abc table
id user_id text1 text2
user hasone abc
abc belongsto user
你這樣就可以用一次關聯就可以了,到時候你就直接用指向就可以取用了
正向 user->abc->text1
反向 abc->user->name
不知道這樣有沒有解答到你(?
我也是在關聯這塊卡很久XD
苦讀官方文件很多次
public function user($number)
{
$column = 'uid'. $number;
return $this->hasOne('App\Models\user\user', 'id', $column)->first();
}
哈哈哈,以改最少的情況,不知道這樣可不可以動,提供你試試看!我沒有實際操作過以上程式碼
開多對多中介表如何
雖然要多維護一個表
但是可以從11個query變成3個
DB test
id
DB test_relation
id test_id user_id
DB user
id name
Test.php
public function user_list()
{
return $this->hasManyThrough('UserModel','TestRelationModel', 'test_id',
'id', 'id', 'user_id');
}
不知道這樣有沒有符合星空大的需求